Thema: Delphi Offset bei AllocMem?

Einzelnen Beitrag anzeigen

Plastewolf
(Gast)

n/a Beiträge
 
#1

Offset bei AllocMem?

  Alt 20. Sep 2013, 18:58
Hallöchen miteinander,

Ich beschäftige mich seit kurzem mit der Programmierung von DLL's. Der Sinn dahinter ist diese in ein externes Programm zu Injecten und dort ein ein Offset zu patchen. Der Grund hierfür ist relativ simpel: Es wurde bei der Entwicklung ein fixer Wert innerhalb der EXE für den verfügbaren Speicher gegeben, kommt man in die Situation mehr zu benötigen, so schwappt der Speicher über und überschreibt damit teile Nachbarspeicher, was natürlich zum Absturz führt. Bisher habe ich über einen Hex Editor einfach ein paar KB hinten an der EXE angehängt und über einen Debugger dann das Offset geändert. Jetzt kam mir die Idee man könnte das ganze doch viel eleganter über eine eigene DLL lösen könnte.

Die Theorie: Prozess starten, DLL laden, DLL reserviert Speicher, DLL patcht Offset zur Laufzeit, EXE schreibt nun in den von der DLL reservierten Speicher statt des eigenen.

Zu diesem Zweck habe ich mir die Dokumentation durchgelesen und bin über den Befehl AllocMem gestoßen. Wenn ich das ganze also richtig interpretiert habe, müsste ich mit der Funktion Addr := AllocMem(1024) genau 1 KB im Arbeitsspeicher reservieren und das dazu passende Offset an den Pointer ADDR übergeben.

Wenn ich jetzt aber über Showmessage(PChar(Addr)); das Offset von dem frisch Reservierten Speicher ausgeben will, bekomme ich einfach garnichts angezeigt.


Habe ich dabei etwas vergessen? Laut Doku müsste AllocMem einen Wert zurück liefern.


Vielen Dank schonmal im vorraus.
  Mit Zitat antworten Zitat