Frage

Ich arbeite Binärdateien in der Analyse unter Verwendung von Python. Ich habe Debugger unter Verwendung einer dynamischen Analyse zu tun (das heißt, die Anwendung läuft und mit Breakpoints Laufzeitausführung zu bekommen). jedoch können die Ergebnisse verbessert werden, wenn ich einige binäre Instrumentierung fremework verwenden können wie PIN . Die PIN wird in C ++ entwickelt und als geschlossene Quelle (DLLs). Wir schreiben so genannte PinTools beschreiben Sie , wo und was wir abfängt wollen. Ich mag Port PIN-Funktionen in Python, so dass ich Python weiter zu verwenden. Ich bin mir bewusst, "ctypes" und Boost-Python.

Mein Problem ist: um PIN zu verwenden, haben wir eine Stiftvorrichtung schreiben und unsere bibnary ausführbare Datei mit Pin und Stiftvorrichtung laufen (es ist wie mit JIT laufenden Anwendung). Nun habe ich keine Ahnung, ob ich ctypes usw. verwenden kann, um PIN-Funktionen zu importieren und diesen Python-Code verwenden, um dynamisch die binäre Analyse. Können Sie mir bitte einige Vorschläge und Leitlinien geben, wie diese Aufgabe gehen.

Also, in der Mutter-n-Schale, möchte ich PIN Framework eine Python-Schnittstelle (Wrapper) erstellen.

War es hilfreich?

Lösung

Überprüfen Sie die ProcessTap Projekt aus. Erscheint genau zu implementieren, was Sie suchen: http://code.google.com/p/processtap/

Andere Tipps

Ich war vor kurzem darüber nachgedacht, während ich nicht in sie ausgesehen habe, würde ich das Problem, wie dieser Ansatz: Brief Stiftvorrichtung, dass bei der Initialisierung startet ein eingebettetes Python-Interpreter und die Importe ein Python-Modul. Ich würde schauen SWIG bei Verwendung von Bindungen für alle die PIN api Anrufe generieren Sie verwenden möchten. Dann würde der Stiftvorrichtung eine hartcodierte Funktion in der importierten Python-Modul aufrufen, die Anrufe an die api ausgeben würde, um mehr Funktionen zu registrieren, und tun, was Sie tun wollen.

Ich bin mir nicht sicher, wie die Rückrufe funktionieren würde, ich weiß nicht genug über SWIG. Auch kann dieses fehlschlagen, wenn das Programm Sie versuchen zu Instrumente selbst Python verwendet. Aber das ist, wie ich würde versuchen, dieses Problem zu lösen, um zu starten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top