Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
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
Dna — Framework d'analyse binaire statique basé sur LLVM | Kitploit
Outils/GitHubGitHub/colton1skees/dna
Analyse StatiqueAnalyse des VulnérabilitésAnalyse de CodeExploitationRétro-ingénierieDébogueursAnalyse de BinairesAnalyse de Micrologiciel
GitHubcolton1skees/dna

Dna

Framework d'analyse binaire statique basé sur LLVM

Voir le dépôt
36534il y a 3 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

Dna

Dna est un framework d'analyse statique de binaires construit sur LLVM. Il est notamment écrit presque entièrement en C#, incluant des liaisons gérées pour LLVM, Remill et Souper.

Fonctionnalités

Dna implémente une reconstruction itérative de graphe de flot de contrôle fortement inspirée de l'article SATURN. Il applique de manière itérative la descente récursive, le lifting (à l'aide de remill) et la résolution de chemins jusqu'à ce que le graphe de flot de contrôle complet soit reconstitué. Dans le cas des tables de saut, nous utilisons un algorithme récursif basé sur Souper et z3 pour résoudre l'ensemble des cibles possibles de la table de saut. Vous pouvez trouver l'algorithme d'exploration itérative ici, et l'algorithme de résolution des tables de saut ici.

Une fois qu'un graphe de flot de contrôle a été entièrement exploré, il peut ensuite être recompilé en x86 et réinséré dans le binaire à l'aide des algorithmes ici et ici. Bien que le code compilé ne soit pas joli, loin de là, il devrait s'exécuter tant que le graphe de flot de contrôle reconstruit est correct. Cela dit, il s'agit encore d'un prototype de recherche – des bogues et des cas particuliers sont attendus. L'exploration du graphe de flot de contrôle peut échouer dans le cas, par exemple, de tables de saut non bornées ou d'instructions non liftables.

Quelques autres fonctionnalités notables :

  • Prend en charge la plupart des tables de saut, y compris les tables de saut imbriquées ou dites compressées de MSVC.
  • Prend en charge le lifting de code avec SEH vers LLVM IR. Lorsque SEH est présent, les instructions try/catch et les intrinsèques filter sont insérées dans le graphe de flot de contrôle. Cependant, le recompilateur ne prend pas (encore) en charge SEH (les entrées SEH ne sont pas corrigées), donc les exceptions provoqueront des plantages.
  • Inclut une API robuste pour écrire des passes LLVM nativement en C#. Nous avons des liaisons pour, par exemple, MemorySSA, LoopInfo, les arbres de dominance, la gestion du pipeline de passes, etc.
  • Visualisation de graphes pour les graphes de flot de contrôle LLVM IR et binaires à l'aide de graphviz, ou alternativement un générateur de scripts pour Binary Ninja.

Quelques mises en garde :

  • Seul x86_64 est pris en charge
  • Le code recompilé n'est pas conforme à CET

Dépendances

  • LLVM/LLVMSharp
  • Remill
  • Souper
  • AsmResolver
  • Rivers

Notez que Dna est actuellement basé sur LLVM 17.

VMProtect

Dna contient un plugin de dévirtualisation VMProtect situé dans Dna.BinaryTranslator/VMProtect. Voir cette PR pour plus d'informations.

Compilation

Dna cible actuellement LLVM 17 et doit être compilé sur Windows x64 avec Visual Studio 2022. Compilez Dna.LLVMInterop en mode Release ; l'arbre de dépendances natif est compilé en Release et les builds d'interop en Debug ne sont pas pris en charge.

Prérequis

  • Visual Studio 2022 avec les outils C++/MSBuild
  • CMake
  • Ninja
  • outils clang-cl / LLVM disponibles depuis la chaîne d'outils VS
  • Rust/Cargo, pour la DLL du simplificateur EqSat
  • .NET SDK 8+

Exécutez les commandes ci-dessous à partir d'une invite de commandes développeur VS x64, ou d'un autre shell avec les outils C++ VS dans PATH.

1. Compiler les dépendances natives

Le superbuild de dépendances installe LLVM 17, Remill, Z3, XED, gflags/glog et les bibliothèques natives associées dans Dna.LLVMInterop/dependencies/install.

root@kitploit:~
cmake -S Dna.LLVMInterop/dependencies `
      -B Dna.LLVMInterop/dependencies/build `
      -G Ninja `
      -DCMAKE_BUILD_TYPE=Release `
      -DCMAKE_C_COMPILER=clang-cl `
      -DCMAKE_CXX_COMPILER=clang-cl

cmake --build Dna.LLVMInterop/dependencies/build

Si vous changez de compilateur, de type de build ou de paramètres CRT, supprimez à la fois Dna.LLVMInterop/dependencies/build et Dna.LLVMInterop/dependencies/install avant de reconfigurer.

2. Compiler la DLL du simplificateur Rust

Dna.Example et les projets simplificateurs copient eq_sat.dll depuis la sortie de la version Cargo.

root@kitploit:~
cargo build --manifest-path Simplifier/EqSat/Cargo.toml --release

3. Compiler la solution

root@kitploit:~
& "C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\MSBuild.exe" `
  Dna.sln `
  /restore `
  /p:Configuration=Release `
  /p:Platform=x64 `
  /m
Télécharger l’outil