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)