Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
Dna — LLVM-basiertes Framework für statische Binäranalyse | Kitploit
Tools/GitHubGitHub/colton1skees/dna
Statische AnalyseSchwachstellenanalyseCode-AnalyseExploitationReverse EngineeringDebuggerBinäranalyseFirmware-Analyse
GitHubcolton1skees/dna

Dna

LLVM-basiertes Framework für statische Binäranalyse

Repository anzeigen
365345vor 4 MonatenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Dna

Dna ist ein statisches Binary-Analyse-Framework, das auf LLVM aufbaut. Es ist bemerkenswerterweise fast ausschließlich in C# geschrieben, einschließlich verwalteter Bindungen für LLVM, Remill und Souper.

Funktionalität

Dna implementiert eine iterative Kontrollflussgraphen-Rekonstruktion, die stark von der SATURN-Veröffentlichung inspiriert ist. Es wendet iterativ rekursiven Abstieg, Lifting (unter Verwendung von Remill) und Pfad-Lösung an, bis der vollständige Kontrollflussgraph wiederhergestellt ist. Im Fall von Sprungtabellen verwenden wir einen rekursiven Algorithmus basierend auf Souper und z3, um die Menge der möglichen Sprungtabellenziele zu lösen. Sie finden den iterativen Explorationsalgorithmus hier und den Sprungtabellen-Lösungsalgorithmus hier.

Sobald ein Kontrollflussgraph vollständig erkundet wurde, kann er dann mit den Algorithmen von hier und hier zurück nach x86 kompiliert und in die Binärdatei eingefügt werden. Auch wenn der kompilierte Code keineswegs schön ist, sollte er laufen, solange der wiederhergestellte Kontrollflussgraph korrekt ist. Dennoch handelt es sich immer noch um einen Forschungsprototypen – Fehler und Randfälle sind zu erwarten. Die Exploration des Kontrollflussgraphen kann beispielsweise bei unbegrenzten Sprungtabellen oder nicht lifbaren Instruktionen fehlschlagen.

Tool herunterladen

Einige weitere bemerkenswerte Funktionen:

  • Unterstützt die meisten Sprungtabellen, einschließlich MSVCs verschachtelter oder sogenannter komprimierter Sprungtabellen.
  • Unterstützt das Lifting von Code mit SEH zu LLVM IR. Wenn SEH vorhanden ist, werden try/catch-Anweisungen und filter-Intrinsics in den Kontrollflussgraphen eingefügt. Der Recompiler unterstützt SEH jedoch (noch) nicht (die SEH-Einträge werden nicht repariert), sodass Ausnahmen zu Abstürzen führen.
  • Enthält eine starke API zum natives Schreiben von LLVM-Pässen in C#. Wir haben Bindungen für z.B. MemorySSA, LoopInfo, Dominatorbäume, Pass-Pipeline-Verwaltung usw.
  • Graphenvisualisierung für LLVM IR und binäre Kontrollflussgraphen mittels Graphviz oder alternativ einem Skriptgenerator für Binary Ninja.

Einige Einschränkungen:

  • Nur x86_64 wird unterstützt
  • Rekompilierter Code ist nicht CET-konform

Abhängigkeiten

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

Beachten Sie, dass Dna derzeit auf LLVM 17 basiert.

VMProtect

Dna enthält ein VMProtect-Devirtualisierungs-Plugin, das sich in Dna.BinaryTranslator/VMProtect befindet. Weitere Informationen finden Sie in diesem PR.

Bauen

Dna zielt derzeit auf LLVM 17 ab und soll unter Windows x64 mit Visual Studio 2022 gebaut werden. Erstellen Sie Dna.LLVMInterop im Release-Modus; der native Abhängigkeitsbaum ist im Release-Modus gebaut, und Debug-Interop-Builds werden nicht unterstützt.

Voraussetzungen

  • Visual Studio 2022 mit C++/MSBuild-Tools
  • CMake
  • Ninja
  • clang-cl / LLVM-Tools, die über die VS-Toolchain verfügbar sind
  • Rust/Cargo, für die EqSat-Simplifier-DLL
  • .NET SDK 8+

Führen Sie die folgenden Befehle von einer VS x64-Entwickler-Shell oder einer anderen Shell mit den VS C++-Tools in PATH aus.

1. Native Abhängigkeiten erstellen

Der Dependency-Superbuild installiert LLVM 17, Remill, Z3, XED, gflags/glog und zugehörige native Bibliotheken in 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

Wenn Sie Compiler, Build-Typ oder CRT-Einstellungen ändern, löschen Sie sowohl Dna.LLVMInterop/dependencies/build als auch Dna.LLVMInterop/dependencies/install vor der Neukonfiguration.

2. Rust-Simplifier-DLL erstellen

Dna.Example und die Simplifier-Projekte kopieren eq_sat.dll aus der Cargo-Release-Ausgabe.

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

3. Die Projektmappe erstellen

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