Que fait code-obfuscation-deobfuscation ?
Code d’analyse d’obfuscation et de désobfuscation. À utiliser lors du reverse engineering de binaires protégés par du code poubelle, des prédicats opaques, du code automodifiant, un aplatissement de flux de contrôle, une protection par VM ou un chiffrement de chaînes.
Techniques d’obfuscation couvertes
- Code poubelle (junk code) : instructions mortes insérées pour dérouter l’analyse statique.
- Prédicats opaques : expressions conditionnelles toujours vraies ou fausses en pratique, mais difficiles à analyser statiquement.
- Code automodifiant (self-modifying code) : code qui se modifie en cours d’exécution.
- Aplatissement de flux de contrôle (control flow flattening) : transformation du graphe de flot de contrôle en une structure plate avec des dispatchers.
- Protection par machine virtuelle (VM obfuscation) : exécution du code via une VM personnalisée.
- Chiffrement de chaînes de caractères : chaînes encodées/ chiffrées et déchiffrées à l’exécution.
Outils recommandés
| Outil | Utilisation |
|---|---|
| IDA Pro / Ghidra | Analyse statique et décompilation |
| x64dbg / OllyDbg | Débogage dynamique pas à pas |
| Unicorn Engine | Émulation pour exécution de snippets |
| Frida | Instrumentation dynamique et hooking |
| angr | Exécution symbolique pour reverse automatique |
| de4dot (pour .NET) | Désassemblage et déobfuscation assistée |
Approche générale
- Analyse statique : avec IDA Pro ou Ghidra, identifiez les patterns d’obfuscation.
- Analyse dynamique : utilisez un débogueur (x64dbg) pour tracer l’exécution et repérer le code poubelle.
- Émulation : avec Unicorn Engine, exécutez des parties protégées en isolation.
- Exécution symbolique : avec angr, simplifiez les prédicats opaques et aplatissements.
- Réécriture de code : remplacez les blocs obfusqués par du code clair (via patching ou instrumentation Frida).
Exemple de commande (CLI)
# Lancer l’analyse avec un outil externe
analysis_tool --binary protected.exe --technique cf-flattening