Thema: Delphi Offset bei AllocMem?

Einzelnen Beitrag anzeigen

Plastewolf
(Gast)

n/a Beiträge
 
#4

AW: Offset bei AllocMem?

  Alt 21. Sep 2013, 19:50
Entschuldige für den Doppelpost aber darf ich nochmals eine kleine Frage einwerfen?

Ich habe mir über den Debugger die von mir benötigten Offsets herausgesucht.

Code:
Offset   | Code
0042053B   MOV EDX,OFFSET 0055E170
00420704   MOV EAX,DWORD PTR DS:[EDX*4+EAX+55E170]
0042075D   MOV DWORD PTR DS:[EAX*4+55E170],EDI
004207C9   MOV DWORD PTR DS:[EAX*4+55E170],0
Im Klartext würde das bedeuten das ich nur eine Funktion brauche, welche das originale Offset "0055E170" mit dem neuen Offset der DLL ändert (BZW die gesamte Zeile neu schreibt).
Ich hatte hierfür zuerst den Befehl "WriteProcessMemory" vorgesehen, aber nachdem ich eine Weile herum probiert habe musste ich feststellen das dieser nicht so ganz so funktioniert wie ich es gerne möchte. Das liegt wohl auch daran das er für Integer Werte gedacht ist. Über Google fand ich einen Tipp der besagte das ich einfach über die integrierte ASM Funktion von Delphi arbeiten könnte, aber auch das führt eigentlich nur zu Speicherproblemen und fehlern.

Die naheliegenste Lösung liegt in diesem Fall also in dem von dir erwähnten "MOVE" Befehl. Leider konnte ich bisher noch nicht herausfinden wie ich diesen so verwenden kann das er eine Zeile im Arbeitsspeicher eines externen Programmes ändern kann. Erschwerend kommt dazu das ich derzeit nicht weiß wie ich das Handle abfragen soll, da die DLL bereits im Prozess integriert ist.

Ich müsste Theoretisch ja nur von Delphi den String "MOV EDX,OFFSET" kopieren, dann das neue Offset anhängen und letztendlich den ganzen Wert in Hex umwandeln lassen. Dann hätte ich eine Grundlage die ich in den Speicher schreiben könnte. Oder Irre ich mich dabei?
  Mit Zitat antworten Zitat