Uma ferramenta para extrair informações dos bancos de dados da IDA. idbtool sabe como lidar com bancos de dados de todas as versões da IDA desde os arquivos V2.0, i64 e idb . Você também pode usar idbtool para recuperar informações de bancos de dados não foram.
idbtool trabalha sem mudança com o IDA V7.0.
Com o IDBTOOL, você pode pesquisar milhares de arquivos .idb em segundos.
Mais precisamente: no meu laptop, é necessário:
Carregar um arquivo de IDB de aproximadamente 5 Gbyte na IDA leva cerca de 45 minutos. Enquanto o IDB3.H leva basicamente tempo, não mais que alguns milissegundos.
Existem duas versões desta ferramenta:
Um escrito em python
Um escrito em C ++
Ambos os repositórios contêm uma biblioteca que pode ser usada para leitura de arquivos .idb ou .i64 .
Uso:
idbtool [options] [database file(s)]
-n ou --names listarão todos os valores nomeados no banco de dados.-s ou --scripts listarão todos os scripts armazenados no banco de dados.-u ou --structs listarão todas as estruturas armazenadas no banco de dados.-e ou --enums listarão todas as enumes armazenadas no banco de dados.--imports listarão todos os símbolos importados do banco de dados.--funcdirs listará pastas de função armazenadas no banco de dados.-i ou --info imprimirá algumas informações gerais sobre o banco de dados.-d OR --pagedump DEPONCIONAR BTREE PÁGINA CONTEÚDO.--inc , --dec Lista todos os registros em ordem ascendente / descendente.-q ou --query de registros específicos de pesquisa no banco de dados.-m ou --limit limite o número de resultados retornados por -q .-id0 , -id1 despejar apenas uma seção específica.--i64 , --i32 Diga a idbtool que o arquivo especificado é de um banco de dados de 64 ou 32 bits.--recover arquivos do grupo de um banco de dados descompactado.--classify resume o uso do nó no banco de dados--dump hexdump os dados binários originais As consultas precisam ser especificadas pela última vez na linha de comando.
exemplo:
idbtool [database file(s)] --query "Root Node;V"
Listará o binário de origem para todos os bancos de dados especificados na linha de comando.
Uma consulta é uma string com o seguinte formato:
Exemplo de consultas:
Root Node;V -> imprime registro contendo o nome binário de origem?Root Node -> imprime o registro de nome apontando para a raiz>Root Node -> Imprime os 10 primeiros registros começando com o ID do nó raiz.<Root Node -> Imprime os 10 registros iniciando com os registros antes do nó root..0xff000001;N -> imprime a entrada do nome do rootnode.#1;N -> Imprime a entrada do nome RootNode. Liste o nó mais alto e o registro seguinte no banco de dados de duas maneiras diferentes, a primeira: começando no primeiro registro abaixo ffc00000 e listando o próximo. O segundo: começando no primeiro recorde após ffc00000 e listando o anterior:
--query "<#0xc00000" --limit 2 --inc -v--query ">#0xc00000" --limit 2 --dec -v Observe que esse deve ser o nodeid no registro $ MAX NODE .
Liste os dois últimos registros:
--limit 2 --dec -v Liste os dois primeiros registros, o $ MAX LINK e os registros $ MAX NODE :
--limit 2 --inc -vExistem vários métodos para imprimir todos os registros no banco de dados. Isso pode ser útil se você deseja investigar mais dos internos da Ida. Mas também pode ser útil na recuperação de dados de bancos de dados corrompidos.
--inc , --dec pode ser usado para enumerar todos os registros B-Tree na direção avançada ou para trás.-v para obter uma tecla/saída mais bonita--id0 caminha pela árvore da página, em vez da árvore de discos, imprimindo o conteúdo de cada página--pagedump pular linearmente através do arquivo, isso também revelará informações em páginas excluídas. Quando a IDA ou seu computador travou enquanto trabalhava em uma desmontagem, e você ainda não salvou o banco de dados, fica com alguns arquivos com extensões como .id0 , .id1 , .nam , etc.
Esses arquivos são o banco de dados não embalado, eu os chamo de arquivos naked .
Usando as opções --filetype e --i64 ou --i32 , você pode inspecionar esses arquivos naked individualmente. ou use a opção --recover para visualizá -los como um banco de dados completo juntos. idbtool descobrirá automaticamente quais arquivos pertenceriam juntos.
idbtool pode descobrir o tamanho do Bits do banco de dados a partir de um arquivo .id0 , mas ainda não (ainda) dos outros.
O arquivo idblib.py contém uma biblioteca.
Willem hengeveld [email protected]