Presentamos IPyIDA: un complemento de Python para su conjunto de herramientas de ingeniería inversa

ESET Research anuncia IPyIDA 2.0, un complemento de Python que integra IPython y Jupyter Notebook en IDA

AIF Pro de Hex-Rays es probablemente la herramienta más popular para el software de ingeniería inversa en la actualidad. Para los investigadores de ESET, esta herramienta es un desinstalador favorito e inspiró su desarrollo. IPyIDA complemento de incrustación El núcleo de IPython En AIDA Pro. En continuo desarrollo desde 2014, nos complace anunciar el lanzamiento de la versión 2.0. Tiene un propósito similar al de otro complemento llamado IPyIDA. IDA IPythonpero con un giro: mientras que IDA IPython solo es compatible con Windows, IPyIDA es compatible con macOS, Linux y Windows.

Si ya está familiarizado con IDA Pro e IPython, salte al enlace última sección De este artículo sobre IPyIDA. Si no está familiarizado con IPython, salte al enlace parte media. Finalmente, si aprecia una breve introducción a IDA Pro, siga leyendo.

¿Qué es IDA Pro?

IDA Pro es un desensamblador que convierte código máquina en código ensamblador. Después de cargar el archivo, IDA Pro lo descomprime y guarda el análisis en los archivos de la base de datos. IDA Pro proporciona diferentes ventanas a la base de datos, cada una de las cuales ayuda de manera única al investigador a encontrar y comprender mejor el código de interés.

Echemos un vistazo a algunas de estas ventanas descargando Archivo MathLibrary.dllConfigurable con Microsoft Instrucciones para crear un archivo DLL.

Salir de la ventana

La ventana de salida muestra el estado del análisis de archivos, mensajes de error para operaciones solicitadas por el usuario y mensajes sobre la salida de algunos complementos. La figura 1 muestra la ventana de salida después de la primera descarga MathLibrary.dll.

Figura 1. Ventana de salida BIA

En la parte inferior de esta ventana hay un campo de entrada que acepta comandos. La Figura 2 muestra los dos proveedores de lenguaje de comandos estándar enviados con IDA desde la versión 7.3: IDC para comandos escritos en el propio lenguaje similar a C de IDA, y Complemento IDAPython Para comandos escritos en Python.

Figura 2. Campo de entrada para escribir comandos de Python en IDA

Ventana de vista de IDA

La ventana Vista de IDA, también conocida como ventana de desmontaje, tiene dos formatos de visualización: vista de gráficos y vista de texto. Una vista gráfica visualiza el flujo del programa dividiendo las funciones en bloques con un solo punto de entrada y un solo punto de salida. La Figura 3 muestra la vista gráfica.

Figura 3. Vista del programa de desmontaje de BIA

La vista de texto proporciona una vista lineal del desensamblado que muestra direcciones virtuales, código de ensamblaje y comentarios. La figura 4 muestra la vista de texto.

Figura 4. Vista del texto de desmontaje de IDA

Además de estas y muchas otras ventanas que proporciona IDA, IDA le permite escribir complementos personalizados que amplían sus funciones y resuelven problemas prácticos de ingeniería inversa. Pasemos a IPython y algunas de las características atractivas que ofrece a los ingenieros de reversa que usan scripts de Python en IDA.

Una visión general de IPython

Aunque IDAPython satisface las necesidades básicas de ejecutar scripts y comandos de Python en IDA, los entusiastas de Python IPython la temperatura. IPython es un conjunto de herramientas que ofrece una experiencia más interactiva con Python. IPython utiliza un modelo de dos procesos que consta de un kernel y un cliente. Un kernel es un proceso que recibe comandos del cliente, los ejecuta y devuelve resultados. El cliente puede ser cualquier consola interactiva, por ejemplo Consola Jupyter, Consola Jupyter Qto cuaderno jupyter.

La naturaleza interactiva de estos clientes proviene de las funciones que agregan al shell clásico de Python. La Figura 5 muestra el uso de un bloque de código multilínea para definir una función en IPython.

Figura 5. Uso de un bloque de código multilínea para definir una función en IPython

Tenga en cuenta el resaltado de sintaxis de números enteros, palabras clave, funciones integradas y cadenas.

presionando el botón Pestaña IPython proporciona una lista de atributos, objetos o funciones relevantes que pueden completar el código. La Figura 6 muestra las funciones de la lista de finalización de pestañas que se aplican al objeto de cadena.

Figura 6. Finalización de pestañas en IPython

Si la terminación de la mesa es más rica jedi esta instalado.

IPython también proporciona funciones mágicas, que son funciones que normalmente se denominan con un % o %% prefijo y toma argumentos con sintaxis de estilo de línea de comandos. Se muestra en la Figura 7 %cronométralo función mágica, que cronometra la ejecución de una declaración de Python.

Figura 7. Función mágica en IPython

¡usando! Si hay un carácter al comienzo de la línea de comando, la consola de IPython pasa el comando al shell del sistema principal para que se ejecute. Por ejemplo, es un famoso comando pepitaque instala y administra paquetes Índice de paquetes de Python (Py Pi). La Figura 8 muestra !pepita El comando se ejecuta desde IPython.

Figura 8. Ejecución de comandos de shell desde IPython

IPython proporciona más funciones interactivas que se pueden explorar en el programa documentos oficiales.

IPyIDA: Llevando IPython a IDA

Con el lanzamiento de IPyIDA 2.0, escribir scripts de Python en IDA es más conveniente debido a las siguientes ventajas:

La Figura 9 muestra el proceso de apertura de un Jupyter Notebook desde IPyIDA.

Figura 9. El %open_notebook La función mágica en IPyIDA

La figura 10 muestra la consola Jupyter que se ejecuta en una sesión de terminal fuera de IDA que se conecta al núcleo de IPython en IDA.

Figura 10. Consola de Jupyter fuera de IDA que se vuelve a conectar al núcleo de IPython en IDA

La opción Jupyter Qt Console para IPyIDA brinda funciones interactivas adicionales a la consola IPython tradicional, como gráficos integrados, guardar e imprimir la sesión actual y resaltado de sintaxis completo. Estos se enumeran en la descripción. Documentación oficial de la consola Jupyter Qt.

IPyIDA incluso ofrece sus propias funciones interactivas inspiradas en IDA. La Figura 11 muestra que al hacer Ctrl-clic (Cmd-clic en macOS) en direcciones o nombres de variables en la consola de IPython, la vista cambia a la dirección virtual en la ventana de desmontaje.

Figura 11. Al hacer Ctrl-clic en una variable o dirección en IPyIDA salta a la dirección en la ventana de desmontaje de IDA

La Figura 12 muestra un volcado hexadecimal para una matriz de bytes con contenido que no es ASCII.

Figura 12. IPyIDA mostrando volcados hexadecimales

Si es nuevo en IDA Pro, IPyIDA es una gran ayuda para comenzar API de AIF. Si es un veterano, IPyIDA hace que la creación de secuencias de comandos de Python sea mucho más fácil, lo que hace que su tiempo dedicado a la ingeniería inversa sea más centrado y productivo.

Leave a Reply

Your email address will not be published. Required fields are marked *