| name | reverse-engineering |
| description | Guide complet de rétro-ingénierie — Ghidra, Radare2, IDA Free, GDB, objdump, strace, ltrace, strings, xxd, analyse statique et dynamique de binaires. |
Reverse Engineering — Guide Complet
Concepts fondamentaux
Approches
| Type | Description |
|---|
| Analyse statique | Examiner le binaire sans l'exécuter |
| Analyse dynamique | Exécuter et observer le comportement |
| Disassembly | Reconstruire l'assembleur depuis le code machine |
| Decompilation | Reconstruire du pseudo-C depuis l'assembleur |
1. Outils de base — Première approche
Identifier le fichier
file binaire
checksec --file=binaire
Strings — Extraire les chaînes
strings binaire
strings -n 8 binaire
strings -t x binaire
Analyse des sections
readelf -h binaire
readelf -S binaire
readelf -s binaire
readelf -d binaire
objdump -d binaire
objdump -t binaire
nm binaire
2. Analyse dynamique
strace — Appels système
strace ./binaire
strace -f ./binaire
strace -e open ./binaire
strace -o trace.log ./binaire
ltrace — Appels de bibliothèque
ltrace ./binaire
ltrace -e memcpy+strlen ./binaire
GDB — Debugger GNU
gdb ./binaire
(gdb) run
(gdb) break main
(gdb) break *0x08048400
(gdb) continue
(gdb) info registers
(gdb) x/32wx $esp
(gdb) x/s $esp
(gdb) disas main
(gdb) set $eax = 0
(gdb) stepi / nexti
Pwntools (framework CTF)
from pwn import *
p = process('./binaire')
p.sendline(b'AAAA')
print(p.recvline())
GDB + Pwndbg (meilleure UX)
git clone https://github.com/pwndbg/pwndbg
cd pwndbg && ./setup.sh
(gdb) context
(gdb) vmmap
(gdb) search "/bin/sh"
(gdb) ropgadget
3. Ghidra — Décompilateur NSA (Gratuit)
Workflow Ghidra
1. File → New Project → Import File
2. Double-clic sur le binaire → Analyse → Accepter les analyseurs par défaut
3. Symbol Tree → trouver main()
4. Fenêtre Decompile → pseudo-code C
5. Renommer les variables (clic droit → Rename)
6. Identifier les structures et les flux de contrôle
Raccourcis Ghidra
G Aller à une adresse
L Renommer un symbole
; Ajouter un commentaire
Ctrl+E Éditer le type de données
Ctrl+Shift+D Afficher le graphe de flux
4. Radare2 — Framework CLI complet
Commandes essentielles
r2 binaire
r2 -A binaire
r2 -d binaire
r2 -w binaire
Analyse
[0x08048000]> aaa
[0x08048000]> afl
[0x08048000]> s main
[0x08048000]> pdf
[0x08048000]> V
[0x08048000]> VV
Recherche et patching
[0x08048000]> / flag
[0x08048000]> izz
[0x08048000]> iI
[0x08048000]> is
Utilitaire rabin2 (sans ouvrir le shell)
rabin2 -I binaire
rabin2 -z binaire
rabin2 -i binaire
rabin2 -E binaire
rabin2 -R binaire
rabin2 -S binaire
5. Techniques d'analyse
Cracker un simple password check
1. strings binaire → trouver la chaîne "Incorrect"
2. objdump -d binaire | grep -A5 "Incorrect"
3. Identifier la comparaison (cmp, test, jne, je)
4. Patcher le saut conditionnel ou inverser la logique
Détection de packers
strings binaire | wc -l
upx -d binaire
Analyse de shellcode
echo 'shellcode en hex' | xxd -r -p > shellcode.bin
r2 -a x86 -b 32 shellcode.bin
6. Outils spécifiques par plateforme
APK Android
apktool d application.apk
jadx application.apk
d2j-dex2jar classes.dex
adb logcat
frida -U -l script.js com.package
.NET / C#
monodis assembly.exe
Mach-O (macOS)
otool -L binaire
otool -tV binaire
7. Cheatsheet rapide
file binaire
checksec --file=binaire
strings binaire | less
objdump -d binaire | grep main
strace ./binaire
ltrace ./binaire
Ressources