Question

Je travaille dans l'analyse des fichiers binaires, en utilisant Python. J'utilise débogueurs pour faire une analyse dynamique (i.e. exécutant l'application et l'utilisation des points d'arrêt pour obtenir l'exécution de l'exécution). Cependant, les résultats peuvent être améliorés si je peux utiliser un fremework d'instrumentation binaire comme PIN . Le code PIN est développé en C ++ et fourni en tant que source fermée (uniquement DLL). Nous écrivons quelque chose appelé PinTools ne décrivent où et quoi nous voulons INTERCEPTIONS. Je veux fonctionnalité PIN de port en Python pour que je continue en utilisant Python. Je suis conscient de "ctypes" et boost-python.

Mon problème est le suivant: pour pouvoir utiliser PIN, nous écrivons un pintool et d'exécuter notre exécutable bibnary avec Pin et pintool (il est comme l'application en cours d'exécution avec JIT). Maintenant, je ne sais pas si je peux utiliser ctypes etc. pour importer des fonctions PIN et en utilisant ce code python pour analyser dynamiquement le binaire. Pouvez-vous s'il vous plaît fournir des suggestions ou des lignes directrices sur la façon de procéder à cette tâche.

Ainsi, dans l'écrou-n-shell, je veux créer une interface Python (wrapper) pour cadre PIN.

Était-ce utile?

La solution

Consultez le projet ProcessTap. Semble mettre en œuvre exactement ce que vous cherchez: http://code.google.com/p/processtap/

Autres conseils

Je pensais récemment à ce sujet, alors que je ne l'ai pas regardé en elle, j'aborder le problème comme celui-ci: écrire un pintool que, lors de l'initialisation, démarre un interpréteur python intégré et l'importation d'un module python. Je regarde en utilisant SWIG pour générer des liaisons pour tous les appels api PIN que vous souhaitez utiliser. Ensuite, la pintool appellerait une fonction dans le module hardcoded python importé qui émettrait des appels à l'api d'enregistrer plus de fonctions et de faire tout ce que vous voulez faire.

Je ne sais pas comment les callbacks travailleraient, je ne sais pas assez sur SWIG. En outre, cela peut échouer si le programme que vous essayez d'instrument lui-même utilise Python. Mais c'est comme ça que je vais essayer de résoudre ce problème pour commencer.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top