[C++]hexadezimal immer um 1 erhöhen

07/23/2009 03:52 Bot_interesierter#16
Lies doch einfach den Speicherbereich den du durch Iterieren willst komplett aus mit einem einzigen ReadProcessMemory call, wenn du bei jedem Schleifen Durchlauf ReadProcessMemory aufrufst ist es klar das es lahmt.
Übrigens dein Suchbereich ist doch etwas groß und normalerweise ist die Base Adresse eines Prozesses in Windows 0x40000 oder so, wenn ich das recht in Erinnerung habe wirst du davor eher keine Sinnvollen Daten finden.
07/23/2009 11:13 neofox#17
die frage die ich mir nun stelle ist wie lese ich alle Adressen auf einmal mit ReadProcessMemory? beispiel?

und das Problem bestand schon im Uhrsprung Code der ansiech bei mir auch langsam abläuft und das hat nichts mit mein PC zu tun. wie Funktion also die Grundfunktion
Code:
for(lzBase = 0x11111 ; lzBase <= 0x22222; lzBase = lzBase + 0x1)
{

cout << "Adresse : 0x" << lzBase << endl;


}
07/23/2009 12:35 push ebp#18
machs so wie schon Bot_interesierter gesagt hat, les den datensatz mit einem readprocessmemory ein. kannst dir ja ein array erstellen..

Code:
DWORD YourArray[YourSize];
ReadProcessMemory( handleprozess, (LPCVOID)lzBase, &YourArray, sizeof(YourArray), &puffer );
07/23/2009 17:49 schlurmann#19
Quote:
Originally Posted by push ebp View Post
machs so wie schon Bot_interesierter gesagt hat, les den datensatz mit einem readprocessmemory ein. kannst dir ja ein array erstellen..

Code:
DWORD YourArray[YourSize];
ReadProcessMemory( handleprozess, (LPCVOID)lzBase, &YourArray, sizeof(YourArray), &puffer );
Da ist ein DWORD Array aber ziemlich unpraktisch. Ich würde ein BYTE Array vorschlagen. Ansonsten gute Idee und natürlich viel besser als durchzuloopen.
07/24/2009 11:40 neofox#20
ich merk noch das ich sehr viel lernen muss!

also ich verstehe nicht gands wie das geht mit dem befehl?
Code:
DWORD YourArray[YourSize];
ReadProcessMemory( handleprozess, (LPCVOID)lzBase, &YourArray, sizeof(YourArray), &puffer );
kann mir jemand vielleicht erklären wie ich damit arbeite? also einfach nur ein binden wie hier und dan geht es??
Code:
DWORD adressen[zahl];
		ReadProcessMemory( handleprozess, (LPCVOID)lzBase, &adressen, sizeof(zahl), &puffer );

while(an)
{
		if (punkte == suche)
		{
			zahl = zahl + 1;
			adressen[zahl] = lzBase;
			cout << "Adresse : 0x" << hex << lzBase << endl;
		}
}
wen das falsch ist entschuldigt aber das ist für mich gerade echt einwenich merkwirdich! O.o
07/24/2009 18:16 Bot_interesierter#21
PHP Code:
dword bytesread;
char memorydump[größe]; //char ist genau ein byte groß

if(!ReadProcessMemoryhandleprozess, (LPCVOID)lzBasememorydumpsizeof(memorydump), &bytesread )){/*Fehler hier behandeln*/}

for(
unsigned int i=0i<größei++){ //Das  Array wird durch laufen
           
           
if(strcmp(&memorydump[i],suche)==0){ 
                   
cout<<"Adresse: 0x"<<hex<<lzBase+i<<endl;
           }

Mit diesem Code kannst du nach einem String suchen, also suche muss ein String sein.

Du solltest den zu durch suchenden Bereich möglichst klein halten, sonst verschwendet dieses Programm extrem viel Arbeitsspeicher.