Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
Dna — Framework di analisi statica binaria basato su LLVM | Kitploit
Strumenti/GitHubGitHub/colton1skees/dna
Analisi StaticaAnalisi delle VulnerabilitàAnalisi del CodiceExploitReverse EngineeringDebuggerAnalisi di BinariAnalisi del Firmware
GitHubcolton1skees/dna

Dna

Framework di analisi statica binaria basato su LLVM

Vedi Repository
365343 mesi faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Dna

Dna è un framework di analisi binaria statica costruito su LLVM. È notevolmente scritto quasi interamente in C#, incluse le gestioni gestite per LLVM, Remill e Souper.

Funzionalità

Dna implementa una ricostruzione iterativa del grafo del flusso di controllo fortemente ispirata all'articolo SATURN. Applica iterativamente la discesa ricorsiva, il sollevamento (usando remill) e la risoluzione dei percorsi fino a quando il grafo del flusso di controllo completo non viene recuperato. Nel caso delle tabelle di salto, utilizziamo un algoritmo ricorsivo basato su Souper e z3 per risolvere l'insieme delle possibili destinazioni delle tabelle di salto. Puoi trovare l'algoritmo di esplorazione iterativa qui, e l'algoritmo di risoluzione delle tabelle di salto qui.

Una volta che un grafo del flusso di controllo è stato completamente esplorato, può essere ricompilato in x86 e reinserito nel binario utilizzando gli algoritmi da qui e qui. Sebbene il codice compilato non sia bello da nessun punto di vista, dovrebbe funzionare purché il grafo del flusso di controllo recuperato sia corretto. Detto questo, è ancora un prototipo di ricerca - bug e casi limite sono previsti. L'esplorazione del grafo del flusso di controllo potrebbe fallire in caso di, ad esempio, tabelle di salto illimitate o istruzioni non sollevabili.

Altre caratteristiche degne di nota:

  • Supporta la maggior parte delle tabelle di salto, incluse quelle nidificate o cosiddette compresse di MSVC.
  • Supporta il sollevamento del codice con SEH in IR di LLVM. Quando SEH è presente, le istruzioni try/catch e gli intrinseci filter vengono inseriti nel grafo del flusso di controllo. Sebbene il ricompilatore non supporti (ancora) SEH (le voci SEH non sono corrette), quindi le eccezioni causeranno crash.
  • Include una potente API per scrivere pass di LLVM nativamente in C#. Abbiamo binding per, ad esempio, MemorySSA, LoopInfo, alberi dominatori, gestione della pipeline dei pass, ecc.
  • Visualizzazione del grafo per IR di LLVM e grafi del flusso di controllo binari usando graphviz o in alternativa un generatore di script per binary ninja.

Alcune avvertenze:

  • Solo x86_64 è supportato
  • Il codice ricompilato non è conforme a CET

Dipendenze

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

Nota che Dna è attualmente basato su LLVM 17.

VMProtect

Dna contiene un plugin di devirtualizzazione VMProtect situato in Dna.BinaryTranslator/VMProtect. Vedi questa PR per maggiori informazioni.

Compilazione

Dna attualmente targetta LLVM 17 ed è previsto che venga compilato su Windows x64 con Visual Studio 2022. Compila Dna.LLVMInterop in modalità Release; l'albero delle dipendenze native è compilato in Release e le build Debug di interoperabilità non sono supportate.

Prerequisiti

  • Visual Studio 2022 con strumenti C++/MSBuild
  • CMake
  • Ninja
  • clang-cl / strumenti LLVM disponibili dalla toolchain di VS
  • Rust/Cargo, per la DLL del simplificatore EqSat
  • .NET SDK 8+

Esegui i comandi seguenti da una shell sviluppatore x64 di VS, o da un'altra shell con gli strumenti C++ di VS nel PATH.

1. Compila le dipendenze native

La superbuild delle dipendenze installa LLVM 17, Remill, Z3, XED, gflags/glog e le librerie native correlate 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

Se si cambia compilatore, tipo di build o impostazioni CRT, elimina sia Dna.LLVMInterop/dependencies/build che Dna.LLVMInterop/dependencies/install prima di riconfigurare.

2. Compila la DLL del simplificatore Rust

Dna.Example e i progetti del simplificatore copiano eq_sat.dll dall'output di rilascio di Cargo.

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

3. Compila la soluzione

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
Scarica lo strumento