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
dncil — La biblioteca de código abierto del equipo FLARE para desensamblar instrucciones de Common Intermediate Language (CIL). | Kitploit
Herramientas/GitHubGitHub/mandiant/dncil
Ingeniería InversaAnálisis de MalwareAnálisis de Binarios
GitHubmandiant/dncil

dncil

La biblioteca de código abierto del equipo FLARE para desensamblar instrucciones de Common Intermediate Language (CIL).

Ver Repositorio
17820hace 26 díasRevisado 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

dncil

PyPI - Python Version Last release CI Downloads License

dncil es una librería de desensamblado de Common Intermediate Language (CIL) escrita en Python que permite analizar el encabezado, las instrucciones y los controladores de excepciones de métodos administrados de .NET. Los datos analizados se exponen a través de una API orientada a objetos para ayudarte a desarrollar rápidamente herramientas de análisis de CIL con dncil.

¿Por qué Python? Las librerías existentes que admiten el desensamblado de CIL, como dnLib, están escritas en C#. Para aprovechar estas herramientas, debes crear aplicaciones C#, lo que requiere experiencia en desarrollo con C#. Con dncil, una alternativa en Python puro, puedes:

  1. No necesitar experiencia con C# para analizar CIL programáticamente.
  2. Desarrollar y probar rápidamente tus herramientas de análisis de CIL.
  3. Integrar fácilmente tus herramientas de análisis de CIL con proyectos Python existentes.

Ejemplo

El script de ejemplo print_cil_from_dn_file.py usa dncil junto con la librería de análisis de .NET dnfile para desensamblar los métodos administrados que se encuentran en un ejecutable de .NET. Veamos qué puede hacer.

Primero, compilamos el siguiente código fuente en C#:

root@kitploit:~
using System;	

public class HelloWorld
{
    public static void Main(string[] args)
    {
        Console.WriteLine ("Hello World!");
    }
}

La compilación produce un ejecutable PE que contiene metadatos de .NET que informan al Common Language Runtime (CLR) cómo ejecutar nuestro código. Usamos dnfile para analizar estos metadatos, lo que nos da el desplazamiento de nuestro método administrado Main. Luego usamos dncil para desensamblar y mostrar las instrucciones CIL almacenadas en esa ubicación.

Veamos lo anterior en acción:

root@kitploit:~
$ python scripts/print_cil_from_dn_file.py hello-world.exe 

Method: Main
0000    00                  nop            
0001    72 01 00 00 70      ldstr          "Hello World!"
0006    28 04 00 00 0a      call           System.Console::WriteLine
000B    00                  nop            
000C    2a                  ret            

Nuestro método Main está representado por la clase CilMethodBody. Esta clase contiene datos que incluyen el encabezado, las instrucciones CIL y los controladores de excepciones de un método administrado determinado. También expone varias funciones auxiliares:

root@kitploit:~
>  main_method_body.flags
SmallFormat  :  false
TinyFormat   :  false
FatFormat    :  false
TinyFormat1  :  true
MoreSects    :  false
InitLocals   :  false
CompressedIL :  false
>  main_method_body.size
14
>  hexdump.hexdump(main_method_body.get_bytes())
00000000: 36 00 72 01 00 00 70 28  04 00 00 0A 00 2A        6.r...p(.....*
>  hexdump.hexdump(main_method_body.get_header_bytes())
00000000: 36                                                6
>  hexdump.hexdump(main_method_body.get_instruction_bytes())
00000000: 00 72 01 00 00 70 28 04  00 00 0A 00 2A           .r...p(.....*

Cada instrucción CIL encontrada en nuestro método administrado Main está representada por la clase Instruction. Esta clase contiene datos que incluyen el desplazamiento, el mnemónico, el opcode y el operando de una instrucción CIL determinada. También expone varias funciones auxiliares:

root@kitploit:~
>  len(main_method_body.instructions)
5
>  insn = main_method_body.instructions[1]
>  insn.offset
1
>  insn.mnemonic
'ldstr'
>  insn.operand
token(0x70000001)
>  insn.is_ldstr()
True
>  insn.size
5
>  hexdump.hexdump(insn.get_bytes())
00000000: 72 01 00 00 70                                    r...p
>  hexdump.hexdump(insn.get_opcode_bytes())
00000000: 72                                                r
>  hexdump.hexdump(insn.get_operand_bytes())
00000000: 01 00 00 70                                       ...p

Instalación

Para instalar dncil, usa pip para obtener el módulo dncil:

root@kitploit:~
$ pip install dncil

Para ejecutar los scripts de ejemplo, asegúrate de instalar dnfile. Alternativamente, instala dncil con las dependencias de desarrollo como se describe en la sección Desarrollo a continuación.

Consulta print_cil_from_bytes.py para ver un ejemplo rápido de cómo usar dncil para imprimir las instrucciones CIL que se encuentran en un flujo de bytes que contiene un método administrado de .NET.

Desarrollo

Si deseas revisar y modificar el código fuente de dncil, deberás descargarlo de GitHub e instalarlo localmente.

Usa el siguiente comando para instalar dncil localmente con las dependencias de desarrollo:

root@kitploit:~
$ pip install /local/path/to/src[dev]

Necesitarás las dependencias de desarrollo de dncil para ejecutar las pruebas y el linting como se describe a continuación.

Pruebas

Usa el siguiente comando para ejecutar las pruebas:

root@kitploit:~
$ pytest /local/path/to/src/tests

Linting

Usa los siguientes comandos para identificar errores de formato:

root@kitploit:~
$ black -l 120 -c /local/path/to/src
$ isort --profile black --length-sort --line-width 120 -c /local/path/to/src
$ mypy --config-file /local/path/to/src/.github/mypy/mypy.ini /local/path/to/src/dncil/ /local/path/to/src/scripts/ /local/path/to/src/tests/

Créditos

dncil se basa en el código de análisis de CIL que se encuentra en dnLib.

Descargar herramienta