
Outil de comparaison floue pour la désobfuscation des APKs Android en identifiant les fonctions renommées entre les versions, générant des fichiers de correspondance et des rapports HTML interactifs pour l'analyse de logiciels malveillants et de vulnérabilités.
🤖 Obfu[DE]scate : un outil de désobfuscation et de comparaison pour APK Android. 📱
Obfu[DE]scate est un outil Python conçu pour simplifier le processus de désobfuscation et de comparaison de deux versions d'un APK Android — même si les fonctions ont été renommées dans le cadre de l'obfuscation. Grâce à une logique de comparaison floue, Obfu[DE]scate peut identifier les similitudes entre les fonctions et vous aider à découvrir les changements entre les versions d'APK.
Commencer avec Obfu[DE]scate est simple ! Suivez ces étapes :
pip install -r REQUIREMENTS.txt
Obfu[DE]scate a été testé sur Windows 11, mais devrait fonctionner sur d'autres systèmes également.
Obfu[DE]scate propose plusieurs options en ligne de commande pour personnaliser son comportement :
Pour comparer deux fichiers APK, exécutez simplement Obfu[DE]scate avec la commande suivante :
python ObfuDeScate.py -a1 "old_example.apk" -a2 "new_example.apk" -cp "com.example.path"
Dans l'exemple ci-dessus, Obfu[DE]scate examinera toutes les fonctions dans l'APK old_example.apk au chemin de classe com.example.path et les comparera à toutes les fonctions trouvées au même chemin de classe dans new_example.apk.
Obfu[DE]scate génère deux fichiers de sortie : un fichier de correspondance au format liste séparée par des nouvelles lignes, et un fichier HTML interactif. Ces fichiers de sortie incluent :
com.chess.play.ObserveGameHelperImpl.d -> com.chess.play.ObserveGameHelperImpl.a .
Obfu[DE]scate est un projet open-source et accueille favorablement les contributions de la communauté. Si vous souhaitez contribuer à Obfu[DE]scate, veuillez suivre ces directives :
Obfu[DE]scate suit le Code de conduite du Contributor Covenant. Veuillez le consulter et vous y conformer lors de vos contributions à Obfu[DE]scate.
Si vous rencontrez un bug ou avez une suggestion pour une nouvelle fonctionnalité, veuillez ouvrir un ticket (issue) dans le dépôt GitHub. Merci de fournir autant de détails que possible, y compris les étapes pour reproduire le problème ou une description claire de la fonctionnalité proposée. Vos commentaires sont précieux et aideront à améliorer Obfu[DE]scate pour tout le monde.
Cet outil ne fonctionnerait pas sans APKTool ! Ensuite, une grande partie des exemples de ce README utilisent l'application Chess.com comme base, découvrez-la ici.
| Abréviation | Paramètre | Description | Obligatoire |
|---|
| -a1 | apk_file_path_1 | Le chemin vers l'APK d'origine. C'est l'APK auquel le second APK sera comparé (par exemple, une version plus ancienne de l'APK). | Vrai |
| -a2 | apk_file_path_2 | Le chemin vers l'APK le plus récent. La sortie montrera les différences entre l'APK 1 et cet APK. | Vrai |
| -cp | class_path | Un chemin en notation de domaine inversé qui sera utilisé pour filtrer les fonctions examinées (par exemple, fournissez com.example.class pour ne comparer que les fonctions de ce chemin). | Faux |
| -o | output_dir | Un répertoire pour enregistrer la sortie (mapping, HTML et APKs désassemblés). | Faux |
| -apktool | apk_tool_path | Si APKTool n'est pas dans votre PATH, utilisez ce paramètre pour indiquer à ObfuDeScate où se trouve APKTool. | Faux |