Einzelnen Beitrag anzeigen

Benutzerbild von OldGrumpy
OldGrumpy

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

Re: Adresse in Speicher, welche Datei

  Alt 16. Apr 2008, 20:55
Zitat von _frank_:
wobei mich aber die programmiertechnische umsetzung auch interessieren würde, um z.b. ein Programm schreiben zu können, welches man den Prozess und die Adresse übergeben kann und es berechnet, in welchem modul+Fileoffset der Fehler/Text steht. Die Prozedur über PE und dllexp ist halt ziemlich aufwendig.
Das funktioniert auch nur wenn keine Laufzeitpacker oder sonstige Sperenzchen zum Einsatz kommen. Bei gepackten Dateien gibt es keinen passenden Fileoffset.

Ansonsten funktioniert das relativ simpel... Zuerstmal brauchst Du ein Handle auf den Zielprocess. Dann kannst Du Dir mittels EnumProcessModules aus der psapi.dll eine Liste der Module im Prozess holen. Mittels GetModuleFileNameEx bekommst Du dann für jedes der Module aus der Liste den kompletten Pfad, und der Handlewert ist praktischerweise identisch mit der Adresse des Moduls im Adressraum des Zielprozesses. Offset ist dann auch relativ einfach zu berechnen, dazu müsste man aber genaugenommen noch dessen PE-Header parsen um zu sehen wie die Sections verteilt sind. Ausserdem kann dynamisch allozierter Speicher ja eigentlich überall sonst wo noch rumliegen.
"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