J'ai un fichier binaire. Je ne sais pas comment il est formaté, je sais seulement qu'il provient d'un code delphi.
Existe-t-il un moyen d'analyser un fichier binaire?
Existe-t-il un "modèle" pour analyser et désérialiser le contenu binaire d'un fichier au format inconnu?
Essayez-les:
Pour mon projet de loisir, j'ai dû inverser l'ingénierie de certains anciens fichiers de jeu. Mes approches étaient les suivantes:
Reverse engineering d'un fichier binaire lorsque vous avez une idée de ce qu'il représente est un processus très long. Si vous ne savez pas ce que c'est, ce sera encore plus difficile.
C'est possible, mais vous devez avoir une assez bonne raison de le faire.
La première étape serait de l'ouvrir dans un éditeur hexadécimal de votre choix et de voir si vous pouvez trouver du texte anglais pour vous orienter dans la direction de ce que le fichier est même censé représenter. A partir de là, Google "Reverse binary files" de Google, il y a beaucoup plus de gens bien informés que moi qui ont écrit des guides à ce sujet.
Le programme "strings" de GNU binutils est très utile. Il imprimera les chaînes de caractères imprimables dans un fichier, donnant souvent un indice sur ce que contient un fichier ou sur un programme.
Si les données représentent des objets Delphi sérialisés, vous devriez commencer à lire sur le processus de sérialisation Delphi. Si tel est le cas, je pense que votre meilleur pari serait de le charger à l'aide de Delphi et de poursuivre votre analyse depuis l'IDE. Quelques informations sur la sérialisation Delphi peuvent être trouvées ici .
EDIT: si le fichier contient des objets delphi sérialisés, alors vous devez écrire un petit programme delphi qui le charge et "convertir" les données vous-même en quelque chose de neutre, comme xml. Si vous parvenez à le faire, vous devez vérifier et voir si delphi prend en charge la sérialisation en xml. Ensuite, vous pouvez accéder à ces objets depuis n'importe quelle langue.
J'ai développé Hexinator (Window & Linux) et Synalyze It! (macOS) exactement à cette fin. Ces applications vous permettent de voir les fichiers binaires comme dans d'autres éditeurs hexadécimaux, mais vous pouvez également créer une "grammaire" avec les spécificités d'un format de fichier binaire. La grammaire contient tous les blocs de construction et est utilisée pour analyser automatiquement le fichier.
Ainsi, vous pouvez conserver les connaissances acquises dans l'analyse et les appliquer simultanément à plusieurs fichiers. Vous pouvez également coder par couleur les bits et morceaux de formats de fichiers pour un aperçu rapide dans l'éditeur hexadécimal. Les résultats de l'analyse sont affichés dans une arborescence où vous pouvez également modifier facilement les fichiers (en appliquant l'endianness et cetera).
La commande unix "file" est vraiment utile - je ne sais pas s'il y a quelque chose comme ça dans windows. Vous le lancez comme ceci:
file myfile.ext
Et il crache une description textuelle basée sur les nombres magiques et les données qu'ils contiennent.
Il est probablement contenu dans cygwin .
Si vous avez accès à l'application qui crée le fichier, vous pouvez appliquer des modifications à l'application, puis enregistrez le fichier et voyez les effets (Gardez à l'esprit que les nombres sont probablement stockés dans little endian ):
Afin de tester les hypothèses que vous avez élaborées avec les étapes ci-dessus, éditez l'un des fichiers et demandez à l'application de le lire.
Si vous n'avez pas accès à l'application elle-même, je vous suggère de l'oublier et de trouver un autre moyen de résoudre votre problème. Il y a une très forte probabilité que ce soit plus rapide ...
Si file
ne donne pas de réponse significative, vous voudrez peut-être essayer TRiD par Marco Pontello pour déterminer si vos données sont stockées dans un format connu.
Connaissez-vous le programme qui l'utilise? Si c'est le cas, vous pouvez accrocher les programmes d'écriture dans la fonction de fichier et avoir une idée de quelles données leur écriture, la taille des données et où.
Plus d'informations: http://www.codeproject.com/KB/DLL/Win32APIHooking_Trouble.aspx
Obtenez l'application Delphi et ouvrez-la dans version freeware IDA Pro , et trouvez où il écrit le fichier, et décodez comment il écrit le fichier de cette façon.
À moins que ce ne soit le texte du plan.
Contrairement aux éditeurs hexadécimaux traditionnels qui affichent uniquement les octets hexadécimaux bruts d'un fichier, l'éditeur 010 peut également analyser un fichier dans une structure hiérarchique à l'aide d'un modèle binaire. Les résultats de l'exécution d'un modèle binaire sont beaucoup plus faciles à comprendre et à modifier que d'utiliser uniquement les octets hexadécimaux bruts.
Essayez de l'ouvrir dans un éditeur hexadécimal et analysez.