Pregunta

Yo trabajo en el análisis de los archivos binarios, usando Python. He estado usando depuradores de hacer un análisis dinámico (es decir, que ejecuta la aplicación y el uso de puntos de corte para obtener la ejecución en tiempo de ejecución). Sin embargo, los resultados pueden ser mejorados si puedo utilizar algunas fremework instrumentación binaria como PIN . El PIN es desarrollado en C ++ y proporciona como código cerrado (sólo DLL). Escribimos algo llamado PinTools no describen dónde y qué queremos intercepta. Quiero funcionalidad de los pines en Python por lo que continúo usando Python. Soy consciente de "ctypes" y Boost-pitón.

Mi problema es: con el fin de utilizar el PIN, escribimos una pintool y hacer funcionar nuestras ejecutable bibnary con Pin y pintool (que es como correr la aplicación con JIT). Ahora, no tengo ni idea de si puedo usar ctypes etc. importar funciones PIN y utilizando un código Python para analizar dinámicamente el binario. Puede usted por favor proporcionar algunas sugerencias o directrices sobre cómo proceder con esta tarea.

Así que, en la tuerca-n-shell, quiero crear una interfaz de Python (wrapper) para marco PIN.

¿Fue útil?

Solución

Salida del proyecto ProcessTap. Aparece para implementar exactamente lo que busca: http://code.google.com/p/processtap/

Otros consejos

Estaba pensando en esto recientemente, aunque no he mirado en él, me gustaría abordar el problema como este: escribir una pintool que, tras la inicialización, se inicia un intérprete de Python incrustado y las importaciones un módulo de Python. Me vería en el uso de TRAGO para generar enlaces para todas las llamadas de la API de PIN que desea utilizar. A continuación, el pintool sería llamar a una función codificada en el módulo Python importados que emitir llamadas a la API para registrar más funciones y hacer lo que quiere hacer.

No estoy seguro de cómo funcionarían las devoluciones de llamada, no sé lo suficiente sobre el TRAGO. Además, esto puede fallar si el programa que está intentando propio instrumento utiliza Python. Pero así es como me iba a tratar de resolver este problema para empezar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top