Question

J'ai un fichier binaire. Je ne sais pas comment c'est formaté, je sais seulement que ça vient d'un code de Delphi.

Existe-t-il un moyen d’analyser un fichier binaire?

Existe-t-il des "motifs" " analyser et désérialiser le contenu binaire d'un fichier au format inconnu?

Était-ce utile?

La solution

Essayez ceci:

  1. Désérialisez les données : analysez la manière dont il compile votre fichier exe (essayez Analyseur de fichiers). ). Essayez de désérialiser les données binaires avec la langue découverte. Puis sérialisez-le dans un format xml (indépendant du langage) que chaque langage de programmation peut comprendre
  2. Analyser les données binaires : essayez de sauvegarder diverses versions du fichier avec peu de variation et utilisez un programme diff pour analyser la signification de chaque bit avec un éditeur hexadécimal. Utilisez-le en conjonction avec les techniques de piratage binaire (comme Comment déchiffrer un format de fichier binaire par Frans Faase )
  3. Inverser l'ingénierie de l'application : essayez de récupérer du code en utilisant des outils de reverse engineering pour le langage de programmation utilisé pour créer l'application (trouvé avec Analyseur de fichiers ). Sinon, utilisez un outil d'analyse de désassembleur tel que IDA Pro Disassembler

Autres conseils

Pour mon projet de loisir, je devais faire de l’ingénierie inverse de vieux fichiers de jeux. Mes approches étaient:

  • Ayez un bon éditeur d'hex.
  • Recherchez les mots lisibles dans le fichier binaire. Notez comment leur distribution est. Si la distance entre eux est constante, vous savez que c'est une liste.
  • Recherchez 2 ou 3 zéros consécutifs. Peut indiquer une valeur int32.
  • Certains dwords peuvent être des pointeurs dans le fichier.
  • Essayez d'identifier les motifs récurrents dans le fichier.
  • Voir beaucoup de C0-CF peut indiquer des données compressées en RLE.

Reverse engineering d’un fichier binaire lorsque vous avez une idée de ce qu’il représente est un processus fastidieux. Si vous ne savez pas de quoi il s'agit, ce sera encore plus difficile.

C’est possible, mais vous devez avoir une très bonne raison pour 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 un texte en anglais pour vous indiquer la direction que le fichier est censé représenter. À partir de là, Google "Reverse Engineering binary files", il existe beaucoup plus de personnes bien informées que moi qui ont rédigé des guides à ce sujet.

Les & str; chaînes " Le programme de GNU binutils est très utile. Il imprimera les chaînes de caractères imprimables dans un fichier, donnant assez souvent un indice sur le contenu d’un fichier ou d’un programme.

Si les données représentent des objets Delphi sérialisés, commencez à lire sur le processus de sérialisation Delphi. Si tel est le cas, votre meilleur choix serait de le charger à l'aide de Delphi et de poursuivre votre analyse à partir de l'EDI. Vous trouverez des informations sur la sérialisation Delphi ici .

EDIT: si le fichier contient des objets Delphi sérialisés, vous devez écrire un petit programme Delphi qui le charge et "convertir". les données vous-même à quelque chose de neutre, comme XML. Si vous y parvenez, vérifiez si Delphi prend en charge la sérialisation au format XML. Vous pouvez ensuite accéder à ces objets à partir de n’importe quel langage.

J'ai développé Hexinator (Fenêtre et 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 en outre créer une "grammaire". avec les spécificités d'un format de fichier binaire. La grammaire contient tous les blocs de construction et permet d'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. Capture d'écran de Synalyze It! Pro Les résultats de l'analyse sont affichés dans une arborescence dans laquelle vous pouvez également modifier facilement les fichiers (en appliquant endianness et cetera).

Le "fichier" unix " La commande est vraiment utile - je ne sais pas s'il y a quoi que ce soit dans Windows Vous l'exécutez comme ceci:

file myfile.ext

Et il crée une description textuelle basée sur les nombres magiques et les données qu’elle contient.

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 en visualisez les effets (notez que les numéros sont probablement stockés dans little endian ):

  • Créez d'abord le fichier à plusieurs reprises. Si les fichiers ne sont pas égaux en binaire, la date / heure actuelle est probablement stockée dans la zone où les différences se produisent.
  • Vous voudrez peut-être répéter cela avec le logiciel exécuté dans différents environnements pour voir si la version du système d'exploitation, etc., est stockée, mais cela est plutôt inhabituel.
  • Ensuite, vous pouvez essayer de modifier une seule variable et créer plusieurs fichiers dont la valeur diffère uniquement. Cela vous aide à identifier où cette variable est stockée.
  • De cette façon, vous pouvez également exclure des variables qui ne sont pas stockées dans le fichier: si vous les modifiez, mais que les fichiers créés sont identiques, ils ne sont pas stockés.

Pour tester les hypothèses que vous avez élaborées avec les étapes ci-dessus, modifiez l'un des fichiers et faites-le lire par l'application.

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 fichier ne donne pas de réponse significative, vous pouvez essayer TRiD de Marco Pontello pour déterminer si vos données sont stockées dans un format connu.

Connaissez-vous le programme qui l’utilise? Si tel est le cas, vous pouvez choisir que les programmes écrivent dans le fichier pour avoir une idée des données écrites, de la taille et de l'emplacement des données.

Plus d'infos: http://www.codeproject.com/KB/DLL/ Win32APIHooking_Trouble.aspx

Téléchargez l’application Delphi et ouvrez-la dans la version gratuite IDA Pro , et trouvez où il écrit le fichier et décodez comment il écrit le fichier de cette façon.

Sauf s'il s'agit d'un texte de plan.

Contrairement aux éditeurs hexagonaux 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 l’utilisation des octets hexa bruts.

http://www.sweetscape.com/010editor/

Essayez de l'ouvrir dans un éditeur hexadécimal et analysez-le.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top