Hallo,
bin gerade dabei eine Art Trainer zu programmieren. Habe mir schon viele Tutorials angeguckt, doch bei allen muss ein Hilfsprogramm wie
CheatEngine benutzt werden, um die Adresse herraus zu finden.
Alles was ich will ist, bei einem Spiel die Adresse eine Wertes (z.B Geld) zu finden (aber mit Delphi).
Wenn ich diese dann mal habe ist der Rest ja einfach.
Das ist mein erster Ansatz:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31:
| procedure TForm1.Button1Click(Sender: TObject); var WindowName: Integer; Window: Integer; Pidi: Integer; Wert: DWORD; nBuf: integer; cAdr: string; nPos: integer; begin Active:= true; cAdr:= edit1.Text; WindowName:= FindWindow(nil,'Test'); GetWindowThreadProcessId(WindowName ,@Pidi); Window:= OpenProcess(PROCESS_VM_READ ,False , Pidi);
while 0 = 0 do begin nPos:= StrToInt('$'+cAdr); cAdr:= inttohex(nPos+4,nPos+4);
ReadProcessMemory(Window ,ptr($+strtoint('$'+cAdr)),@nBuf,4,Wert); memo1.lines.add(cAdr+' : ' + IntToStr(nBuf)); if nBuf = strtoint(edit2.Text) then memo2.Lines.Add(cAdr+' : ' + IntToStr(nBuf));
Application.ProcessMessages; if Active = false then exit; end; CloseHandle(Window); end; |
Das ganze funktioniert eigentlich ganz gut.
Doch jetzt meine Fragen:
1)
Wenn ich bei $0 anfange, kommen erst noch tausende Adressen mit dem Wert 0.
Wo muss die Suche dann beginnen?
2)
Woher weiß ich, wann die Schleife beendet werden kann.
Also wo ist das Programmende?
3)
Was macht
CheatEngine oder
TSearch anderst, dass die Suche bei ihnen viel schneller ist?
Hoffe sehr, dass ihr mir helfen könnte!
Danke & Grüße,
Benny