ObjDump

Def et Fonctionnement :


objdump est un utilitaire de la suite GNU Binutils qui permet d'afficher diverses informations sur les fichiers objets, exécutables, bibliothèques partagées ou encore des fichiers core dumps. Il est principalement utilisé pour l'analyse statique des binaires, permettant de désassembler du code, d'afficher les sections, les symboles, les en-têtes et plus encore.

Utilisation :


L'utilisation basique d'objdump consiste à examiner un binaire pour comprendre sa structure ou analyser son comportement sans l'exécuter. Voici quelques exemples d'utilisation courante :

Désassembler un fichier exécutable :

objdump -d nom_du_fichier

Cette commande désassemble les instructions machine du fichier exécutable spécifié et affiche le code assembleur correspondant.
Pour lancer le code en mode intel on fait :

objdump -d if_then -M intel

Afficher les en-têtes des sections :

objdump -h nom_du_fichier

Cette commande montre les différentes sections présentes dans le fichier binaire, telles que .text (code), .data (données), et .bss (données non initialisées).

Lister les symboles définis dans le binaire :

objdump -t nom_du_fichier

Elle affiche la table des symboles du fichier, incluant les fonctions et variables.

Examiner les en-têtes du fichier :

objdump -x nom_du_fichier

Affiche les en-têtes détaillées du fichier binaire, y compris les informations sur le format du fichier, les dépendances de bibliothèques, et plus encore.

Afficher le code source avec les adresses mémoire :

objdump -S nom_du_fichier

Désassemble le code en ligne avec le code source s'il est disponible dans le fichier binaire, ce qui est utile pour les fichiers compilés avec des informations de débogage.

Exemple d'analyse :

Si vous souhaitez désassembler un fichier nommé a.out pour analyser son code assembleur, vous pouvez utiliser la commande suivante :

objdump -d a.out

Cela produira une sortie montrant les instructions en assembleur, comme illustré ci-dessous :

08048320 <_start>:
 8048320:    31 ed                   xor    %ebp,%ebp
 8048322:    5e                      pop    %esi
 8048323:    89 e1                   mov    %esp,%ecx
 8048325:    83 e4 f0                and    $0xfffffff0,%esp