Totaler Noob versucht Arbeitsspeicher auszulesen und scheitert an Zeile 15
-
Okay... ich hab's jetzt auf folgende Art hinbekommen:
LPCWSTR charToLPCWSTR(LPCSTR ansistr){ int len = MultiByteToWideChar(CP_ACP, 0, ansistr, strlen(ansistr)+1, NULL, 0); LPWSTR unicodestr = (LPWSTR)malloc(len); int a = MultiByteToWideChar(CP_ACP, 0, ansistr, strlen(ansistr)+1, unicodestr, len); return((LPCWSTR) unicodestr); } int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ){ MEMORYSTATUSEX statex; statex.dwLength = sizeof(statex); GlobalMemoryStatusEx(&statex); char messg[100]; sprintf(messg, "Arbeitsspeicher: %d", statex.dwMemoryLoad); LPCWSTR messgout = charToLPCWSTR((LPCSTR) messg); MessageBox(0, messgout, L"Fehler", MB_OK); }
Der 4. Parameter von "MultiByteToWideChar()" musste die Länge der Zeichenkette sein... Naja und Naps Link hat mir jetzt auch geholfen: THX Leute
-
@M@st3rhack3r
warum sollte man den arbeitsspeicher nicht auslesen können...man kann es und man kann sogar werte darin verändern...
kuck dir mal das Memory Management unter anderem die funktionen ReadProcessMemory & WriteProcessMemory an...
@Miikku
hier noch 2 links die dich brennend interesieren dürften
Teil 1
Teil 2
-
@rT!f@Ct schrieb:
@M@st3rhack3r
warum sollte man den arbeitsspeicher nicht auslesen können...man kann es und man kann sogar werte darin verändern...
kuck dir mal das Memory Management unter anderem die funktionen ReadProcessMemory & WriteProcessMemory an...
Damit kannste nur den virtuellen Adressraum anderer Prozesse auslesen. Das ist nicht das gleiche.
-
Ich habe mir mal dieses Tutorial angeschaut doch wenn ich das "Opferprogramm" starte und danach das hier (in C umgeschrieben) erkennt er den Prozess nicht.
#include <stdio.h> #include <stdlib.h> #include <windows.h> main(){ HWND hWnd; hWnd = FindWindow(0,"Opfer"); if(!hWnd){ printf("Prozess nicht gefunden\n"); } else{ printf("Prozess wurde gefunden"); } Sleep(10000); }
Kann mir einer sagen woran das liegt?
-
heist den dein programm dessen werte du verändern willst als Fenstername auch "Opfer"?
-
Ja es heißt so. Ich habs auch schon mit Opfer.exe versucht und es auf 2 weiteren Rechners ausprobiert aber auch ohne Erfolg.
-
LOL
habs doch gewusst.
wenn du es so gemacht hast wie in dem tutorial beschrieben, dann kann dein memorytool NIX finden denn dein Opfer programm heist nicht OPFER sondern zB.
C:\Pfad\zum\Opferprogramm\Name_des_Opferprogramm.exewenn du dein opferprogramm startest, kuck auf die NonClientArray (der blaue balken) das was dort geschrieben steht ersetzt du für "Opfer" in FindWindow
hWnd = FindWindow(0,"C:\\Pfad\\zum\\Opferprogramm\\Name_des_Opferprogramm.exe");
und lies dir mal durch was unter FindWindow in der MSDN steht vieleicht verstehst du's dann eher.
-
Ich danke dir.
Vielleicht hätte ich vorher mal googlen sollen.
Auf jeden Fall tolles Forum
-
Hä? FindWindow braucht doch einen Fenstertitel, nicht die .exe Datei und Pfad?!
-
Ja das stimmt. Aber in diesem Fall ist es eine Konsolenanwendung und somit der Name = Pfad.
-
Oops, sorry, verpennt.