Una herramienta para extraer información de las bases de datos IDA. idbtool sabe cómo manejar las bases de datos de todas las versiones de IDA desde los archivos V2.0, tanto i64 como idb . También puede usar idbtool para recuperar información de bases de datos no cerradas.
idbtool funciona sin cambios con IDA V7.0.
Con IdbTool puede buscar miles de archivos .idb en segundos.
Más precisamente: en mi computadora portátil se necesita:
Cargar un archivo IDB de aproximadamente 5 GBYTE en IDA, toma aproximadamente 45 minutos. Mientras que el IDB3.H no toma básicamente tiempo, no más de unos pocos milisegundos.
Existen dos versiones de esta herramienta:
Uno escrito en Python
Uno escrito en C ++
Ambos repositorios contienen una biblioteca que se puede usar para leer .idb o archivos .i64 .
Uso:
idbtool [options] [database file(s)]
-n o --names enumerarán todos los valores nombrados en la base de datos.-s o --scripts enumerará todos los scripts almacenados en la base de datos.-u o --structs enumerará todas las estructuras almacenadas en la base de datos.-e o --enums enumerará todas las enumines almacenadas en la base de datos.--imports enumerará todos los símbolos importados de la base de datos.--funcdirs enumerará las carpetas de funciones almacenadas en la base de datos.-i o --info imprimirá información general sobre la base de datos.-d o --pagedump dump btree página contenido del árbol.--inc , --dec Enumere todos los registros en orden ascendente / descendente.-q o --query busque registros específicos en la base de datos.-m o --limit Limit El número de resultados devueltos por -q .-id0 , -id1 voltea solo una sección específica.--i64 , --i32 dígale a IdbTool que el archivo especificado es de una base de datos de 64 o 32 bits.--recover de archivos de grupo de una base de datos desempaquetada.--classify resume el uso de nodos en la base de datos--dump hexdump los datos binarios originales Las consultas deben especificarse al final en la línea de comandos.
ejemplo:
idbtool [database file(s)] --query "Root Node;V"
Enumerará el binario de origen para todas las bases de datos especificadas en la línea de comandos.
Una consulta es una cadena con el siguiente formato:
Consultas de ejemplo:
Root Node;V -> Registro de impresión que contiene el nombre binario de origen?Root Node -> Imprime el registro de nombre que apunta a la raíz>Root Node -> Imprime los primeros 10 registros que comienzan con la ID del nodo raíz.<Root Node -> Imprime los 10 registros iniciales con los registros antes de rootNode..0xff000001;N -> Imprime la entrada de nombre RootNode.#1;N -> Imprime la entrada de nombre RootNode. Enumere el nodo más alto y el siguiente registro en la base de datos de dos maneras diferentes, el primero: a partir del primer registro a continuación ffc00000 y enumerando el siguiente. El segundo: comenzando en el primer registro después de ffc00000 , y enumerar el anterior:
--query "<#0xc00000" --limit 2 --inc -v--query ">#0xc00000" --limit 2 --dec -v Tenga en cuenta que este debería ser el nodoid en el registro $ MAX NODE .
Enumere los dos últimos registros:
--limit 2 --dec -v Enumere los dos primeros registros, el $ MAX LINK y los registros $ MAX NODE :
--limit 2 --inc -vExisten varios métodos para imprimir todos los registros en la base de datos. Esto puede ser útil si desea investigar más de las partes internas de Ida. Pero también puede ser útil para recuperar datos de bases de datos dañadas.
--inc , --dec se puede usar para enumerar todos los registros de árbol B en dirección hacia adelante o hacia atrás.-v para obtener una salida de clave/valor más bonita--id0 camina por el árbol de la página, en lugar del árbol de grabación, imprimiendo el contenido de cada página--pagedump omitir linealmente a través del archivo, esto también revelará información en páginas eliminadas. Cuando IDA o su computadora se bloquearon mientras trabajaba en un desmontaje, y aún no guardó la base de datos, le queda un par de archivos con extensiones como .id0 , .id1 , .nam , etc.
Estos archivos son la base de datos desempaquetada, los llamo archivos naked .
Usando las opciones --filetype y --i64 o --i32 , puede inspeccionar estos archivos naked individualmente. O use la opción --recover para verlos como una base de datos completa juntos. idbtool descubrirá automáticamente qué archivos pertenecerían juntos.
idbtool puede descubrir el bitsize de la base de datos de un archivo .id0 , pero no (aún) de los demás.
El archivo idblib.py contiene una biblioteca.
Willem Hengeveld [email protected]