Hallo.
Ich bin gerade dabei WriteProcessMemory in mein Programm zu integrieren. Wie das an sich funktioniert ist klar.
Delphi-Quelltext
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:
| const WindowTitle = 'xyz'; Addr0 = $0046AFC5;
var WIN : integer; PID : integer; TID : integer; HND : integer; WRT : cardinal; POKE: integer;
procedure TForm1.Button3Click(Sender: TObject); begin WIN := FindWindow(nil, WindowTitle); TID := GetWindowThreadProcessId(WIN,@PID); HND := OpenProcess(PROCESS_ALL_ACCESS,False,PID); poke := 1234; WriteProcessMemory(HND,ptr(Addr0),@POKE,Bytes,WRT); FreeMem(BUF); closehandle(HND);
end; |
OK, nun zu meiner Frage. Ich muss an viele Stellen viel Code schreiben, und möchte nicht 30 Variablen für die Addressen und 30 Variablen für den Code verwenden (Poke) auch wenn ich Z.B 10Byte schreibe geht das mit der POKE Variable schon nicht mehr als INTEGER sondern nur noch als INT64.
Ich suche eine Lösung in der Art: (Nur ein Beispiel ohne sinnigen Inhalt)
Adresse1=00CA100
Adresse2=00CA500
Adresse3=00CA900
Code1="12312123786128361827368172638affededed69182739182739817293871293712983712983"
Code2="12312123786128361827368172638affededed69182739182739817293871293712983712983"
Code3="1231231237836128361827368172638affededed69182739182739817293871293712983712983"
Für die Code Variablen kann man ja irgendwann (wenn sie zu gross werden) also wenn man zuviel Code einfügen muss auch kein INT64 mehe nehmen.. Ok, es müsste schon einiges sein.. Aber ich such nach einer Möglichkeitm wie man das vielleicht etwas geschickter lösen kann?
Eventuell mit einem Array? For each address in ... writeprocessmemory... sowas in der Art??
Ich hoffe ich habe mich jetzt nicht zu wirr ausgedrückt.
Freue mich schon auf eure Ideen.
Viele Grüße
Alex
Moderiert von
Motzi: Delphi-Tags hinzugefügt.