RAM
-
Habs jetzt so.
Das müsste doch den Speicher der Notepad gehört auspucken oder?
Weil nur bei den Blöcken die Notepad gehören ist Read....() erfolgreich odeR?#include <stdio.h> #include <windows.h> int main() { HWND hWnd; HANDLE hProc; DWORD dwProcID; DWORD dwRw = 0; unsigned sadress = 0x00000000; unsigned eadress = 0x80000000; int buffer = 0; long iBytes2Read ; long iBytes; // find notepad hWnd = FindWindow(0, "Unbenannt - Editor"); if(!hWnd) return 0; // get process id GetWindowThreadProcessId(hWnd, &dwProcID); // open process hProc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwProcID); // get bytes to read printf("Wieviele Bytes auslesen: "); scanf("%d", &iBytes2Read); printf("\n"); iBytes=0; iBytes2Read = 0x80000000; while(iBytes2Read--){ if(ReadProcessMemory(hProc,(LPCVOID)sadress,&buffer, sizeof(buffer),&dwProcID)){ iBytes++; if(buffer<127 && buffer>31) printf("%c", buffer); } sadress++; } printf("\n\nFertig!"); // close handle CloseHandle(hProc);//<-- Wichtig! // quit fflush(stdin); getchar(); return 0; }
-
fflush(stdin);
Das ist verboten
-
wieso das denn??
-
Original erstellt von <Offtopic>:
**fflush(stdin);Das ist verboten**
Nihct verboten, das Verhalten auf input-Streams ist nur undefiniert
Und in der MSDN wirds benutzt, ist also unter Windows sehr wohl von M$ definiert worden
-
fflush ist nur auf stdout definiert. auf stdin == undefiniertes verhalten
-
Original erstellt von paranoiac.org:
**Habs jetzt so.
Das müsste doch den Speicher der Notepad gehört auspucken oder?
Weil nur bei den Blöcken die Notepad gehören ist Read....() erfolgreich odeR?
**Sieht vernünftig aus....ist nu nicht gerade das schnellste
-
MMmh, wie geht es denn schneller?
Brauche so für 0x00000000 bis 0x01000000 57 Sekunden[ Dieser Beitrag wurde am 22.01.2003 um 15:56 Uhr von paranoiac.org editiert. ]
-
Original erstellt von paranoiac.org:
**MMmh, wie geht es denn schneller?
Brauche so für 0x00000000 bis 0x01000000 57 Sekunden
**Lies in 4096er-Blöcken (Eine Speicherseite), solange es geht. Also mach dienen Buffer z.B. so:
unsigned char buffer[4096];dann musst du halt deine while-Schleife so modifizieren, dass sie 4096er-Blöcke rechnet.
-
char buffer[4097];
-
Ok, aber ist deine vorherige Methode mit VirtualQueryEx nicht schneller?
Oder hab ich da jetzt was ganz falsch verstanden
-
Original erstellt von paranoiac.org:
Ok, aber ist deine vorherige Methode mit VirtualQueryEx nicht schneller?
Oder hab ich da jetzt was ganz falsch verstandenVermutlich, da du Blöcke die nicht existieren garnicht erst anfasst und dir damit nen Haufen fehlerhafte Aufrufe sparst. Denn reeall ist bei Notepad z.B. ja wie du sagtest nur 2MB belegt, während man 2GB abscannt. per VirtualQueryEx bekommst du von vornerein nur die gültigen Bereiche. Das macht das Programm wzar einen Tick komplizierter, aber wesentlich schöner
-
Ok, lönntest du mir dann vielleicht ein wenig helfen?
Ich möchte einfach wenn ich einen String in Notepad eintippe "HALLO" zum Beispiel die Adresse dieses Strings ausgeben können
-
Original erstellt von <++>:
char buffer[4097];Wozu? Ne vernünftieg Ausgabe muss dazu sowieso neu geschrieben werden, es sei denn man mags, wenn der Rechner vor piepen nicht mehr kann
-
Original erstellt von TriPhoenix:
Wozu? Ne vernünftieg Ausgabe muss dazu sowieso neu geschrieben werden, es sei denn man mags, wenn der Rechner vor piepen nicht mehr kannWie bekomme ich das Pipen eigentlich weg?
-
garnicht? wer das an der konsole ausgibt ist dumm :p
-
Muss aber irgentwie wegzubekommen sein.
-
nein
-
/ set end address adrEnd = 0x01000000; // begin for(; adrStart<adrEnd; adrStart+=4096){ // get some info VirtualQueryEx(hProc, (LPCVOID)adrStart, lpBuffer, 4096); // state printf("%X - %X\n", adrStart, adrStart+4096); /*if(ReadProcessMemory(hProc,(LPCVOID)adrStart,&buffer, sizeof(buffer),&dwProcID)){ }*/ }
Wie bekomme ich jetzt aus der Struktur die Information, ob der Speicher für mich "einsehbar" ist?
cu para
-
*schieb*
Wie hast du das mit deinem Programm am Anfang da gemacht, dass du wusstest ob es ein COMMIT-Bereich war?
-
Wie kannst du nach 15 Minuten schon schieben? Das ist ja ne mega Frechheit.