83 votes

Outils d'aide à la rétroconception des formats de fichiers binaires

Quels sont les outils disponibles pour aider à décoder les formats de données binaires inconnus ?

Je sais que Hex Workshop et 010 Editor supportent tous deux les structures. Celles-ci sont correctes dans une certaine mesure pour un format fixe connu, mais deviennent difficiles à utiliser pour tout ce qui est plus compliqué, en particulier pour les formats inconnus. Je suppose que je cherche un module pour un langage de script ou un outil GUI scriptable.

Par exemple, j'aimerais être capable de trouver une structure dans un bloc de données à partir d'informations connues limitées, peut-être un nombre magique. Une fois que j'ai trouvé une structure, je peux suivre des mots de longueur et de décalage connus pour trouver d'autres structures. Puis répéter cela de manière récursive et itérative lorsque cela a un sens.

Dans mes rêves, peut-être même identifier automatiquement les décalages et les longueurs possibles en fonction de ce que j'ai déjà dit au système !

1 votes

Ce n'est pas une réponse directe à votre question : N'avez-vous pas les fichiers exécutables qui fonctionnent avec ces fichiers binaires de format inconnu ? Utiliser un débogueur ring3 tel que OllyDbg pour faire de l'ingénierie inverse serait tellement plus facile que d'essayer de forcer les formats de fichiers.

0 votes

Oh oui, une des applications que j'aurais dû ajouter à la question "quel programme avez-vous jamais voulu écrire mais n'avez jamais trouvé le temps de le faire" ;)

0 votes

Dans certains cas, je dispose de fichiers exécutables qui les traitent dans une certaine mesure. Parfois, les fichiers sont des codes exécutables (mais pas dans un format standard) et peuvent très bien contenir leurs propres routines de décodage. Nous pouvons disposer d'éclats limités de documentation partielle comme point de départ. Dans d'autres cas, je n'ai rien.

23voto

Untrots Points 451

Voici quelques conseils qui vous viennent à l'esprit :

D'après mon expérience, les langages de script interactifs (j'utilise Python) peuvent être d'une grande aide. Vous pouvez écrire un cadre simple pour traiter les flux binaires et quelques algorithmes simples. Ensuite, vous pouvez écrire des scripts qui prendront votre binaire et vérifieront diverses choses. Par exemple :

Faites des analyses statistiques sur les différentes parties. Des données aléatoires, par exemple, vous indiqueront que cette partie est probablement compressée/cryptée. Les zéros peuvent signifier un remplissage entre les parties. Des zéros épars peuvent signifier des valeurs entières ou des chaînes Unicode, etc. Essayez de repérer les différents décalages. Essayez de convertir des parties du binaire en entiers de 2 ou 4 octets ou en flottants, imprimez-les et voyez si elles ont un sens. Écrivez quelques fonctions qui rechercheront les répétitions ou les parties très similaires dans les données, de cette façon vous pourrez facilement repérer les en-têtes.

Essayez de trouver autant de chaînes que possible, essayez différents encodages (chaînes c, chaînes pascal, utf8/16, etc.). Il y a de bons outils pour cela (je pense que Hex Workshop a un tel outil). Les chaînes de caractères peuvent vous apprendre beaucoup de choses.

Bonne chance !

0 votes

Hachoir de la réponse ci-dessous est exactement ce type de cadre. Il est livré avec un ensemble prédéfini de champs : différents types de chaînes de caractères, dates, bits, flottants, remplissage, etc. Des analyseurs intégrés peuvent être utilisés comme exemples avec la documentation.

15voto

Thomas Tempelmann Points 2849

Pour Mac OS X, il y a un nouvel outil génial qui est encore meilleur que mon iBored : Synaliyze It ! ( http://www.synalysis.net/ )

Par rapport à iBored Il est mieux adapté aux fichiers non bloqués, tout en offrant un contrôle total sur les structures, y compris la possibilité de script (avec Lua). De plus, il permet de mieux visualiser les structures.

10voto

MaD70 Points 2902

Tupni A ma connaissance, cet outil n'est pas directement disponible auprès de Microsoft Research, mais il existe un article sur cet outil qui peut être intéressant pour quelqu'un qui souhaite écrire un programme similaire (peut-être open source) :

Tupni : Rétroingénierie automatique des formats d'entrée ( @ Bibliothèque numérique de l'ACM )

Résumé

Des travaux récents ont établi l'importance de l'ingénierie inverse automatique automatique des spécifications de protocoles ou de formats de fichiers. Cependant, les par des outils antérieurs ont manqué des informations importantes informations importantes qui sont critiques pour les applications de sécurité. Dans cet article Dans cet article, nous présentons Tupni, un outil qui peut faire de l'ingénierie inverse d'un d'entrée avec un riche ensemble d'informations, y compris les séquences d'enregistrement, les types d'enregistrement et les contraintes d'entrée. Tupni peut généraliser la spécification du format spécification de format sur des entrées multiples. Nous avons implémenté un prototype de Tupni et l'avons évalué sur 10 formats différents : cinq cinq formats de fichiers (WMF, BMP, JPG, PNG et TIF) et cinq formats de réseau. (DNS, RPC, TFTP, HTTP et FTP). Tupni a identifié toutes les séquences d'enregistrement dans les entrées de test. Nous montrons également que, en agrégeant sur plusieurs fichiers WMF, Tupni peut dériver une spécification de format spécification de format plus complète pour WMF. En outre, nous démontrons l'utilité de l'utilité de Tupni en utilisant la richesse des informations qu'il fournit pour générer des ce qui n'était pas possible avec les versions précédentes de outils de rétro-ingénierie précédents.

2 votes

8voto

Thomas Tempelmann Points 2849

Mon propre outil "iBored", que j'ai publié tout récemment, peut faire une partie de cela. J'ai écrit l'outil pour visualiser et déboguer les formats de systèmes de fichiers (UDF, HFS, ISO9660, FAT etc.), et j'ai implémenté la recherche, la copie et plus tard même le support de la structure et des modèles. Le support des structures est assez simple, et les modèles sont un moyen d'identifier les structures dynamiquement.

L'ensemble est programmable dans un dialecte Visual BASIC, ce qui vous permet de tester des valeurs, de lire des blocs spécifiques, etc.

L'outil est gratuit, fonctionne sur toutes les plateformes (Win, Mac, Linux), mais comme il s'agit d'un outil personnel que je viens de rendre public pour le partager, il n'est pas très documenté.

Cependant, si vous voulez l'essayer et si vous aimez donner votre avis, je pourrais ajouter des fonctionnalités plus utiles.

J'aurais même pu l'ouvrir, mais comme il est écrit en anglais REALbasic je doute que beaucoup de personnes se joignent à un tel projet.

Lien : Page d'accueil de iBored

2 votes

Ça a l'air d'être un sacré projet à rejoindre... Quand je travaillais comme chercheur en antivirus, cela aurait été vraiment pratique. Au lieu de cela, j'ai fait le mien tout à la main ... Je vais le télécharger, et le vérifier. Merci pour cela, j'en ai l'utilité :)

0 votes

On dirait le début d'un bel outil d'analyse de fichiers binaires, mais il est encore très centré sur le disque (les blocs de 512 octets sont un peu évidents...).

0 votes

@SteveBennett : il aime regrouper le fichier en blocs de taille égale, c'est vrai, mais on peut facilement changer la taille du bloc via le menu. Et iBored peut également traiter le fichier entier comme un seul bloc. Le seul inconvénient est qu'il aura du mal avec les gros fichiers parce qu'il essaie d'afficher toutes les données dans une seule vue de bloc défilable alors, comme un seul bloc, ce qui peut conduire à des problèmes de performance.

6voto

mercator Points 16196

J'utilise encore occasionnellement un vieil éditeur hexagonal appelé A.X.E., Advanced Hex Editor. Il semble avoir largement disparu de l'Internet maintenant, bien que Google devrait toujours être capable de le trouver pour vous. La dernière version que je connais était la version 3.4, mais je n'ai vraiment utilisé que la version 2.1 à usage personnel.

Sa fonction la plus intéressante, et celle que j'ai le plus utilisée pour déchiffrer les différents formats de jeux et de graphiques, est son mode d'affichage graphique. Il vous montre simplement le fichier avec chaque octet transformé en un pixel codé en couleur. Et aussi simple que cela puisse paraître, cela a rendu mes tentatives de rétro-ingénierie beaucoup plus faciles.

Je suppose que le faire à l'œil est tout le contraire d'une analyse automatique, et que le mode graphique ne sera pas très utile pour trouver et suivre les décalages...

La dernière version comporte certaines fonctionnalités qui semblent pouvoir répondre à vos besoins (scripts, recherche de régularités, générateur de grammaire), mais je n'ai aucune idée de leur qualité.

0 votes

L'URL est morte, elle est peut-être là maintenant : advanced-hex-editor-a-x-e.fr.softonic.com

0 votes

@Steve Merci pour l'info. C'est celui-là. Malgré toutes les promesses d'absence de virus, mon antivirus m'a averti en essayant de le télécharger, alors je n'ai pas pris la peine de le faire. J'ai reformulé ma réponse.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X