Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
obfuscation_analysis — Plugin Binary Ninja pour analyser et simplifier le code obfusqué | Kitploit
Outils/GitHubGitHub/mrphrazer/obfuscation_analysis
Analyse StatiqueAnalyse de CodeRétro-ingénierieAnalyse de MalwareUtilitaires et FrameworksAnalyse de Binaires
GitHubmrphrazer/obfuscation_analysis

obfuscation_analysis

Plugin Binary Ninja pour analyser et simplifier le code obfusqué

Voir le dépôt
2552317il y a 4 moisVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Analyse d'Obfuscation (v1.3)

Auteurs : Tim Blazytko & Nicolò Altamura

Analyser et simplifier du code obfusqué

Description :

Obfuscation Analysis est un plugin Binary Ninja qui simplifie le travail sur des binaires fortement protégés. Il regroupe une poignée d'assistants ciblés qui vous permettent de

  • simplifier les expressions d'Arithmétique Mixte-Booléenne (MBA) en un clic (basé sur msynth)
  • localiser et nettoyer les fonctions dont le désassemblage est corrompu

Quelques cas d'usage sont disponibles dans examples. De plus, la conférence REcon « Breaking Mixed Boolean-Arithmetic Obfuscation in Real-World Applications » présente quelques cas d'usage. Les diapositives sont disponibles ici. Le plugin complète Obfuscation Detection : une fois les fonctions suspectes signalées, Obfuscation Analysis vous aide à les nettoyer et à les comprendre. D'autres assistants seront ajoutés au fil du temps.

Fonctionnalités principales

  • simplifier l'obfuscation par Arithmétique Mixte-Booléenne dans la vue décompilateur de Binary Ninja
  • identifier et supprimer les fonctions dont le désassemblage est corrompu
  • inliner les fonctions dans la vue décompilateur
  • implémentation efficace et indépendante de l'architecture
  • s'exécute en tâche de fond
  • gestion soignée des erreurs : messages utilisateur concis, trace complète dans le journal Debug
  • Installation

    L'outil peut être installé via le gestionnaire de plugins de Binary Ninja.

    Pour une installation manuelle, suivez ces étapes dans le dossier des plugins de Binary Ninja :

    root@kitploit:~
    git clone https://github.com/mrphrazer/obfuscation_analysis.git
    cd obfuscation_analysis
    
    # optionally: use a virtual environment
    python -m venv obfana-env
    source obfana-env/bin/activate
    
    # install requirements
    pip install -r requirements.txt
    

    Si vous utilisez un environnement virtuel, vous devrez définir manuellement le chemin site-packages dans les paramètres de Binary Ninja.

    Utilisation

    Le plugin est disponible depuis le menu de la barre supérieure de Binary Ninja sous Plugins -> Obfuscation Analysis.

    Plugin Menu

    Simplification MBA

    Pour simplifier l'obfuscation arithmétique, surlignez d'abord l'expression HLIL que vous souhaitez simplifier dans la vue décompilateur. Ensuite, choisissez Plugins -> Obfuscation Analysis -> MBA Simplification -> Slice & Simplify. Le plugin résout le calcul complet, le fait passer par msynth et insère le résultat simplifié sous forme de commentaire sur la même ligne. La courte animation ci-dessous montre l'intégralité du flux de travail :

    MBA Simplification Workflow

    La simplification MBA repose sur msynth. Par défaut, le plugin utilise l'oracle de simplification par défaut de msynth, qui est fourni avec le plugin et préconfiguré. Si vous souhaitez utiliser un oracle plus grand ou personnalisé, définissez obfuscation_analysis.mba_oracle_path manuellement ou naviguez jusqu'au fichier dans la fenêtre Settings de Binary Ninja.

    Plugin Settings

    En cas de problème, le plugin écrit un message concis au niveau utilisateur dans le volet Log ; basculez la vue du journal sur Debug pour voir la trace complète.

    Log Output

    Fonctionnalités

    Le plugin fournit des assistants ciblés qui répondent aux obstacles courants rencontrés lors du reverse engineering de binaires protégés, chacun pouvant être exécuté en tâche de fond depuis l'interface ou via des scripts head-less. Voici les fonctionnalités actuellement disponibles.

    Fonctions corrompues

    Les Fonctions corrompues sont des fonctions dont le désassemblage présente des artefacts indéfinis — blocs de base vides, instructions invalides ou chevauchantes, et similaires. Cet assistant parcourt l'intégralité du BinaryView, signale les fonctions présentant ces symptômes et les liste afin que l'analyste puisse inspecter rapidement du code mal analysé ou délibérément obfusqué. Une action de suppression optionnelle efface chaque fonction signalée et force une nouvelle analyse, nettoyant ainsi la liste des fonctions. C'est particulièrement utile pour localiser

    • des blobs de données que le désassembleur a promus à tort en code
    • des stubs d'obfuscation qui cassent le désassemblage linéaire
    • des fonctions utilisant des instructions chevauchantes ou des sauts mal alignés
    • des problèmes avec les architectures récentes où des instructions peu courantes sont rencontrées

    Simplification MBA

    L'Arithmétique Mixte-Booléenne (MBA) est une technique d'obfuscation qui enfouit des calculs simples dans de longues chaînes d'opérations arithmétiques et booléennes. Cette fonctionnalité simplifie de telles expressions dans le décompilateur. Lorsque vous sélectionnez une instruction HLIL, le plugin collecte sa chaîne de calcul complète avec une tranche arrière SSA restreinte au bloc de base courant, traduit cette tranche en IR Miasm, l'injecte dans msynth et ajoute enfin le résultat simplifié sous forme de commentaire dans la vue décompilateur. Cette fonctionnalité vous permet de

    • réduire des enchevêtrements MBA multi-lignes en une seule équation lisible
    • résoudre des prédicats opaques qui reposent sur des MBA
    • replier des encodages constants alambiqués jusqu'à leur valeur littérale

    Inlining de fonctions

    Pour la fonction actuellement sélectionnée, cet assistant inline récursivement chaque fonction appelée dans la vue décompilateur, donnant à Binary Ninja un IL unique et autonome. Une fois toutes les frontières supprimées, le décompilateur peut propager les données à travers les fonctions, permettant un pliage de constantes plus profond, l'élimination de code mort et une logique généralement plus claire. Utilisez-le pour

    • réduire des chaînes de petits wrappers, thunks ou assistants d'accès
    • améliorer les représentations d'algorithmes qui ont été réparties sur plusieurs fonctions
    • analyser des schémas d'obfuscation où la logique est délibérément dispersée entre les fonctions

    Notez que le HLIL peut devenir très volumineux et lent à afficher sur de très grandes fonctions ou des arbres d'appels profonds. De plus, certaines optimisations du décompilateur peuvent être moins efficaces une fois que tout est fusionné en une seule unité. Pour contrôler cela, vous pouvez limiter la profondeur d'inlining : définissez Settings -> Obfuscation Analysis -> Max Function Inlining Depth à une borne supérieure N (par défaut fixée à 1). Avec une limite de profondeur, seuls les N premiers niveaux d'appels sont inlinés ; les appels plus profonds ne le sont pas.

    Limitations

    Le plugin présente quelques mises en garde dont vous devez être conscient, la plupart liées au pipeline de simplification MBA :

    • Bug de Binary Ninja : sur BN 5.0 stable, l'étape de tranche arrière peut échouer à cause de casts de types HLIL manquants : https://github.com/Vector35/binaryninja-api/issues/6371 ; le problème est corrigé dans 5.1.7477-de et versions ultérieures

    • tranche confinée à un seul bloc de base : les définitions de variables situées dans les blocs prédécesseurs sont ignorées (souvent dépendantes du flux de contrôle), donc certains termes MBA peuvent rester partiellement résolus

    • lacunes de traduction HLIL vers IR Miasm : toutes les constructions HLIL n'ont pas d'équivalent Miasm valide ; lorsque la traduction échoue, l'expression est ignorée et une erreur est journalisée

    • couverture IL : les nœuds de flux de contrôle et les opérations en virgule flottante ne sont actuellement pas traduits

    • contraintes msynth héritées : la simplification MBA hérite de toutes les limitations de msynth

    Contact

    Pour plus d'informations, contactez Tim Blazytko (@mr_phrazer) ou Nicolò Altamura (@nicolodev).

    Télécharger l’outil