Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
Dna — Framework de análisis estático de binarios basado en LLVM | Kitploit
Herramientas/GitHubGitHub/colton1skees/dna
Análisis EstáticoAnálisis de VulnerabilidadesAnálisis de CódigoExplotaciónIngeniería InversaDepuradoresAnálisis de BinariosAnálisis de Firmware
GitHubcolton1skees/dna

Dna

Framework de análisis estático de binarios basado en LLVM

Ver Repositorio
36534hace 3 mesesRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Dna

Dna es un framework de análisis binario estático construido sobre LLVM. Cabe destacar que está escrito casi en su totalidad en C#, incluyendo enlaces administrados para LLVM, Remill y Souper.

Funcionalidad

Dna implementa una reconstrucción iterativa del grafo de flujo de control fuertemente inspirada en el artículo SATURN. Aplica de forma iterativa descenso recursivo, elevación (usando remill) y resolución de caminos hasta que se recupera el grafo de flujo de control completo. En el caso de tablas de salto, utilizamos un algoritmo recursivo basado en Souper y z3 para resolver el conjunto de posibles destinos de la tabla de salto. Puede encontrar el algoritmo de exploración iterativa aquí, y el algoritmo de resolución de tablas de salto aquí.

Una vez que se ha explorado completamente un grafo de flujo de control, se puede recompilar a x86 y reinsertar en el binario utilizando los algoritmos de aquí y aquí. Aunque el código compilado no es bonito en absoluto, debería ejecutarse siempre que el grafo de flujo de control recuperado sea correcto. Dicho esto, sigue siendo un prototipo de investigación: se esperan errores y casos extremos. La exploración del grafo de flujo de control puede fallar en casos como, por ejemplo, tablas de salto no acotadas o instrucciones no elevables.

Otras características notables:

  • Soporta la mayoría de las tablas de salto, incluidas las tablas de salto anidadas o las denominadas comprimidas de MSVC.
  • Soporta la elevación de código con SEH a IR de LLVM. Cuando SEH está presente, se insertan en el grafo de flujo de control las instrucciones try/catch y las intrínsecas filter. Sin embargo, el recompilador aún no soporta SEH (las entradas SEH no se corrigen), por lo que las excepciones causarán fallos.
  • Incluye una API sólida para escribir pases de LLVM de forma nativa en C#. Tenemos enlaces para, por ejemplo, MemorySSA, LoopInfo, árboles de dominancia, gestión de la canalización de pases, etc.
  • Visualización de grafos para IR de LLVM y grafos de flujo de control binarios usando graphviz o, alternativamente, un generador de scripts para binary ninja.

Algunas advertencias:

  • Solo se admite x86_64
  • El código recompilado no cumple con CET

Dependencias

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

Tenga en cuenta que Dna actualmente está basado en LLVM 17.

VMProtect

Dna contiene un plugin de desvirtualización de VMProtect ubicado en Dna.BinaryTranslator/VMProtect. Consulte este PR para obtener más información.

Compilación

Dna actualmente apunta a LLVM 17 y se espera que se compile en Windows x64 con Visual Studio 2022. Compile Dna.LLVMInterop en modo Release; el árbol de dependencias nativas está compilado en Release y no se admiten compilaciones de interoperabilidad en Debug.

Requisitos previos

  • Visual Studio 2022 con herramientas C++/MSBuild
  • CMake
  • Ninja
  • clang-cl / herramientas LLVM disponibles desde la cadena de herramientas de VS
  • Rust/Cargo, para la DLL simplificadora EqSat
  • .NET SDK 8+

Ejecute los comandos a continuación desde un shell de desarrollador de VS x64, u otro shell con las herramientas C++ de VS en PATH.

1. Compilar dependencias nativas

La supercompilación de dependencias instala LLVM 17, Remill, Z3, XED, gflags/glog y las bibliotecas nativas relacionadas en 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 cambia el compilador, el tipo de compilación o la configuración de CRT, elimine tanto Dna.LLVMInterop/dependencies/build como Dna.LLVMInterop/dependencies/install antes de reconfigurar.

2. Compilar la DLL simplificadora de Rust

Dna.Example y los proyectos simplificadores copian eq_sat.dll desde la salida de la versión de Cargo.

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

3. Compilar la solución

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
Descargar herramienta