Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
Dna — Framework de análise estática de binários baseado em LLVM | Kitploit
Ferramentas/GitHubGitHub/colton1skees/dna
Análise EstáticaAnálise de VulnerabilidadesAnálise de CódigoExploraçãoEngenharia ReversaDepuradoresAnálise de BináriosAnálise de Firmware
GitHubcolton1skees/dna

Dna

Framework de análise estática de binários baseado em LLVM

Ver Repositório
365345há 4 mesesRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Dna

Dna é um framework de análise binária estática construído sobre o LLVM. Notavelmente, é escrito quase inteiramente em C#, incluindo bindings gerenciados para LLVM, Remill e Souper.

Funcionalidade

Dna implementa uma reconstrução iterativa de grafo de fluxo de controle fortemente inspirada no artigo SATURN. Ele aplica iterativamente descida recursiva, lifting (usando remill) e resolução de caminhos até que o grafo de fluxo de controle completo seja recuperado. No caso de tabelas de jump, usamos um algoritmo recursivo baseado em Souper e z3 para resolver o conjunto de possíveis alvos da tabela de jump. Você pode encontrar o algoritmo de exploração iterativa aqui, e o algoritmo de resolução de tabelas de jump aqui.

Uma vez que um grafo de fluxo de controle tenha sido totalmente explorado, ele pode então ser recompilado para x86 e reinserido no binário usando os algoritmos de aqui e aqui. Embora o código compilado não seja bonito de forma alguma, ele deve funcionar desde que o grafo de fluxo de controle recuperado esteja correto. Dito isso, ainda é um protótipo de pesquisa - bugs e casos extremos são esperados. A exploração do grafo de fluxo de controle pode falhar no caso de, por exemplo, tabelas de jump ilimitadas ou instruções não levantáveis.

Baixar ferramenta

Algumas outras funcionalidades notáveis:

  • Suporta a maioria das tabelas de jump, incluindo as tabelas de jump aninhadas ou as chamadas comprimidas do MSVC.
  • Suporta lifting de código com SEH para LLVM IR. Quando SEH está presente, instruções try/catch e intrínsecos filter são inseridos no grafo de fluxo de controle. Embora o recompilador não (ainda) suporte SEH (as entradas SEH não são corrigidas), portanto, exceções causarão travamentos.
  • Inclui uma API robusta para escrever passes LLVM nativamente em C#. Temos bindings para, por exemplo, MemorySSA, LoopInfo, árvores de dominância, gerenciamento de pipeline de passes, etc.
  • Visualização de grafos para LLVM IR e grafos de fluxo de controle binários usando graphviz ou alternativamente um gerador de scripts para binary ninja.

Algumas ressalvas:

  • Apenas x86_64 é suportado
  • O código recompilado não está em conformidade com CET

Dependências

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

Observe que o Dna atualmente é baseado no LLVM 17.

VMProtect

Dna contém um plugin de desvirtualização VMProtect localizado em Dna.BinaryTranslator/VMProtect. Veja este PR para mais informações.

Compilação

O Dna atualmente tem como alvo o LLVM 17 e deve ser compilado no Windows x64 com Visual Studio 2022. Compile Dna.LLVMInterop no modo Release; a árvore de dependências nativas é construída em Release e compilações Debug interop não são suportadas.

Pré-requisitos

  • Visual Studio 2022 com ferramentas C++/MSBuild
  • CMake
  • Ninja
  • ferramentas clang-cl / LLVM disponíveis a partir do toolchain do VS
  • Rust/Cargo, para a DLL simplificadora EqSat
  • .NET SDK 8+

Execute os comandos abaixo a partir de um shell de desenvolvedor VS x64, ou outro shell com as ferramentas C++ do VS no PATH.

1. Compilar dependências nativas

O superbuild de dependências instala LLVM 17, Remill, Z3, XED, gflags/glog e bibliotecas nativas relacionadas em 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 alterar o compilador, tipo de compilação ou configurações CRT, exclua tanto Dna.LLVMInterop/dependencies/build quanto Dna.LLVMInterop/dependencies/install antes de reconfigurar.

2. Compilar a DLL simplificadora Rust

Dna.Example e os projetos simplificadores copiam eq_sat.dll da saída de release do Cargo.

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

3. Compilar a solução

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