Un outil pour extraire des informations des bases de données IDA. idbtool sait comment gérer les bases de données de toutes les versions IDA depuis V2.0, les fichiers i64 et idb . Vous pouvez également utiliser idbtool pour récupérer les informations à partir de bases de données non clôturées.
idbtool fonctionne sans changement avec IDA v7.0.
Avec idbtool, vous pouvez rechercher des milliers de fichiers .idb en secondes.
Plus précisément: sur mon ordinateur portable, il faut:
Chargement d'un fichier IDB GBYTE en IDA, prend environ 45 minutes. Alors que IDB3.H ne prend pas du temps, pas plus de quelques millisecondes.
Il existe deux versions de cet outil:
Un écrit en python
Celui écrit en C ++
Les deux référentiels contiennent une bibliothèque qui peut être utilisée pour lire les fichiers .idb ou .i64 .
Usage:
idbtool [options] [database file(s)]
-n ou --names répertoriera toutes les valeurs nommées dans la base de données.-s ou --scripts répertorie tous les scripts stockés dans la base de données.-u ou --structs répertorieront toutes les structures stockées dans la base de données.-e ou --enums répertorieront tous les énumérations stockées dans la base de données.--imports énumérera tous les symboles importés de la base de données.--funcdirs répertoriera les dossiers de fonction stockés dans la base de données.-i ou --info imprimera quelques informations générales sur la base de données.-d ou --pagedump Dump de vidage btree contenu l'arborescence de la page.--inc , --dec Réservez tous les enregistrements dans l'ordre ascendant / décroissant.-q ou --query des enregistrements spécifiques de recherche dans la base de données.-m ou --limit Limit limite le nombre de résultats renvoyés par -q .-id0 , -id1 Dump une seule section spécifique.--i64 , --i32 Dites à idbtool que le fichier spécifié provient d'une base de données 64 ou 32 bits.--recover les fichiers de groupe à partir d'une base de données déballée.--classify résume l'utilisation du nœud dans la base de données--dump hexdump les données binaires d'origine Les requêtes doivent être spécifiées en dernier sur la ligne de commande.
exemple:
idbtool [database file(s)] --query "Root Node;V"
Listera le binaire source pour toutes les bases de données spécifiées sur la ligne de commande.
Une requête est une chaîne avec le format suivant:
Exemple de requêtes:
Root Node;V -> Imprime l'enregistrement contenant le nom binaire source?Root Node -> imprime l'enregistrement du nom pointant vers la racine>Root Node -> imprime les 10 premiers enregistrements à partir de l'ID du nœud racine.<Root Node -> Imprime les 10 enregistrements startng avec les enregistrements avant le NOOTNODE..0xff000001;N -> imprime l'entrée de nom rootNode.#1;N -> imprime l'entrée de nom rootNode. Énumérez le nœud le plus élevé et l'enregistrement suivant dans la base de données de deux manières différentes, le premier: à partir du premier enregistrement ci-dessous ffc00000 , et répertoriant le suivant. Le second: à partir du premier enregistrement après ffc00000 et répertoriant le précédent:
--query "<#0xc00000" --limit 2 --inc -v--query ">#0xc00000" --limit 2 --dec -v Notez que cela devrait être le NodeID dans l'enregistrement $ MAX NODE .
Énumérez les deux derniers enregistrements:
--limit 2 --dec -v Énumérez les deux premiers enregistrements, les enregistrements de nœuds $ MAX LINK et $ MAX NODE :
--limit 2 --inc -vPlusieurs méthodes existent pour imprimer tous les enregistrements dans la base de données. Cela peut être utile si vous souhaitez enquêter sur davantage les internes d'Ida. Mais peut également être utile pour récupérer les données à partir de bases de données corrompues.
--inc , --dec peut être utilisé pour énumérer tous les enregistrements de B-Tree dans la direction avant ou vers l'arrière.-v pour obtenir une sortie de clé / valeur plus jolie--id0 parcourt l'arbre de page, au lieu de l'arbre d'enregistrement, en imprimant le contenu de chaque page--pagedump sauter linéairement le fichier, cela révélera également des informations dans les pages supprimées. Lorsque IDA ou votre ordinateur s'est écrasé en travaillant sur un démontage, et que vous n'avez pas encore enregistré la base de données, vous vous retrouvez avec quelques fichiers avec des extensions comme .id0 , .id1 , .nam , etc.
Ces fichiers sont la base de données déballée, je les appelle des fichiers naked .
À l'aide des options --filetype et --i64 ou --i32 vous pouvez inspecter ces fichiers naked individuellement. Ou utilisez l'option --recover pour les voir comme une base de données complète ensemble. idbtool déterminera automatiquement quels fichiers appartiendront ensemble.
idbtool peut déterminer le bitsize de la base de données à partir d'un fichier .id0 , mais pas (encore) des autres.
Le fichier idblib.py contient une bibliothèque.
Willem Hengeveld [email protected]