À retenir
- Le désassemblage ne permet pas de retrouver le code source d'origine (comme le C++ ou le Python), mais seulement des instructions de bas niveau.
- Il est spécifique à chaque type de processeur (un code pour Intel x86 ne se désassemble pas comme un code pour puce Apple M1).
- C'est l'outil de base de l'expert en sécurité informatique (le 'reverse engineer').
Le désassemblage est l'opération qui consiste à transformer un programme informatique binaire (compréhensible uniquement par la machine) en un langage textuel lisible par un humain, appelé langage assembleur. C'est comme si l'on tentait de reconstituer le plan de montage d'un meuble en observant simplement l'objet fini, afin de comprendre chaque étape de sa construction.
Étymologie
Composé du préfixe privatif dés- et de assemblage. En informatique, il désigne l'inverse de l'étape d'assemblage, qui est le processus normal de traduction du code écrit par le programmeur vers le langage machine (0 et 1).
Exemples d'usage
- Utiliser un logiciel comme Ghidra ou IDA Pro pour examiner le contenu d'un fichier exécutable (.exe ou .bin).
- Analyser un virus informatique pour comprendre comment il se propage, sans avoir accès à ses fichiers sources originaux.
- Étudier le fonctionnement d'un vieux logiciel dont le code source a été perdu.
Cas d'usage
Il intervient principalement en cybersécurité pour l'analyse de logiciels malveillants, en rétro-ingénierie pour comprendre le fonctionnement d'un programme concurrent ou ancien, et lors du débogage technique quand le développeur doit comprendre précisément comment le processeur exécute son code.
Bonnes pratiques
Le désassemblage est une tâche complexe ; il est recommandé d'utiliser des outils qui génèrent des graphes de flux pour visualiser les branchements du programme. Attention également au cadre légal : la rétro-ingénierie est souvent encadrée par les licences d'utilisation des logiciels et les lois sur la propriété intellectuelle.
Synonymes
Antonymes
Conseil
Si vous débutez, ne soyez pas effrayé par l'aspect cryptique de l'assembleur. Commencez par apprendre les instructions de base (MOV, PUSH, POP, JMP) pour comprendre comment les données circulent entre la mémoire et le processeur lors d'un désassemblage.
Questions fréquentes
Quelle est la différence entre désassemblage et décompilation ?
Le désassemblage produit du langage assembleur (très proche du processeur), tandis que la décompilation tente de recréer un langage de haut niveau (comme le C), plus facile à lire mais souvent moins précis.
Est-ce que le désassemblage est illégal ?
Cela dépend du pays et du contrat de licence (EULA). En Europe, il est parfois toléré à des fins d'interopérabilité ou de sécurité, mais interdit pour copier un logiciel.
Peut-on désassembler n'importe quel fichier ?
On peut désassembler n'importe quel fichier binaire exécutable, mais le résultat sera illisible si le fichier est chiffré ou protégé par des mécanismes 'anti-debug'.