Einzelnen Beitrag anzeigen

Benutzerbild von OldGrumpy
OldGrumpy

Registriert seit: 28. Sep 2006
Ort: Sandhausen
941 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Nachträglich Code in EXe einbauen

  Alt 23. Sep 2007, 17:04
Also das Umleiten an sich ist super simpel, im Prinzip nichts anderes als bei den WindowProcs wo Du Dir den Pointer holst, nen eigenen Wert reinschreibst, Dein Ding machst und am Ende die alte Proc aufrufst. Trickreich wirds erst wenn Dein Code halt Systemfunktionen aufrufen will. Dafür gibts mehrere Möglichkeiten:

a) Dein Code macht das alles zu Fuss (hat seine eigene Importtable die beim Start erstmal gefüllt wird)
b) Dein Exepatcher untersucht die Imports der Zielexe und benutzt die vorhandene Importtable für seinen eigenen Code ebenfalls. Falls der eigene Code APIs braucht die noch nicht in der Importtable stehen, lässt sich diese auch erweitern.

a) klingt schon nach viel Aufwand, ist aber noch wesentlich einfacher als b) zu programmieren wenn man nicht jeden Tag in den Innereien des PE-Formates rumwühlt *g*

Dein Exepatcher muss dann nur noch den Entrypoint (EP) aus dem PE-Header auslesen, den Wert durch den Einsprungspunkt des eigenen Codes ersetzen und am Ende des eigenen Codes per JMP an den EP springen. Sowas in Delphi zu programmieren wäre mir persönlich allerdings zu umständlich, meine kleinen Patcher hab ich bisher immer direkt in Assembler gestrickt (Und eh jetzt wieder jemand was von Cracker schreit, es handelte sich bei den Dingern um ganz legale Programme die im Zuge meiner damaligen Entwicklertätigkeit notwendig wurden.)
"Tja ja, das Ausrufezeichen... Der virtuelle Spoiler des 21. Jahrhunderts, der Breitreifen für die Datenautobahn, die k3wle Sonnenbrille fürs Usenet. " (Henning Richter)
  Mit Zitat antworten Zitat