Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
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
dncil — A biblioteca de código aberto da equipe FLARE para desmontar instruções da Common Intermediate Language (CIL). | Kitploit
Ferramentas/GitHubGitHub/mandiant/dncil
Engenharia ReversaAnálise de MalwareAnálise de Binários
GitHubmandiant/dncil

dncil

A biblioteca de código aberto da equipe FLARE para desmontar instruções da Common Intermediate Language (CIL).

Ver Repositório
1782013há 2 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

dncil

PyPI - Python Version Last release CI Downloads License

dncil é uma biblioteca de desmontagem da Common Intermediate Language (CIL) escrita em Python que suporta a análise do cabeçalho, das instruções e dos manipuladores de exceção de métodos gerenciados do .NET. Os dados analisados são expostos por meio de uma API orientada a objetos para ajudar você a desenvolver rapidamente ferramentas de análise de CIL usando dncil.

Por que Python? Bibliotecas existentes que suportam desmontagem de CIL, como o dnLib, são escritas em C#. Para aproveitar essas ferramentas, você precisa criar aplicativos C#, o que exige experiência em desenvolvimento C#. Usando o dncil, uma alternativa em Python puro, você:

  1. Não precisa de experiência com C# para analisar CIL programaticamente.
  2. Pode desenvolver e testar rapidamente suas ferramentas de análise de CIL.
  3. Pode integrar facilmente suas ferramentas de análise de CIL com projetos Python existentes.

Exemplo

O script de exemplo print_cil_from_dn_file.py usa o dncil em conjunto com a biblioteca de análise .NET dnfile para desmontar os métodos gerenciados encontrados em um executável .NET. Vamos ver o que ele pode fazer.

Primeiro, compilamos o seguinte código-fonte C#:

using System;	

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

A compilação resulta em um executável PE contendo metadados .NET que informam ao Common Language Runtime (CLR) como executar nosso código. Usamos o dnfile para analisar esses metadados, o que nos dá o deslocamento do nosso método gerenciado Main. Em seguida, usamos o dncil para desmontar e exibir as instruções CIL armazenadas nesse local.

Vejamos o acima em ação:

$ 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            

Nosso método Main é representado pela classe CilMethodBody. Essa classe contém dados que incluem o cabeçalho, as instruções CIL e os manipuladores de exceção de um determinado método gerenciado. Ela também expõe várias funções auxiliares:

>  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 instrução CIL encontrada em nosso método gerenciado Main é representada pela classe Instruction. Essa classe contém dados que incluem o deslocamento, o mnemônico, o opcode e o operando de uma determinada instrução CIL. Ela também expõe várias funções auxiliares:

>  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

Instalação

Para instalar o dncil, use o pip para obter o módulo dncil:

$ pip install dncil

Para executar os scripts de exemplo, instale o dnfile. Alternativamente, instale o dncil com as dependências de desenvolvimento conforme descrito na seção Desenvolvimento abaixo.

Consulte print_cil_from_bytes.py para ver um exemplo rápido de uso do dncil para imprimir as instruções CIL encontradas em um fluxo de bytes contendo um método gerenciado .NET.

Desenvolvimento

Se você quiser revisar e modificar o código-fonte do dncil, precisará baixá-lo do GitHub e instalá-lo localmente.

Use o seguinte comando para instalar o dncil localmente com as dependências de desenvolvimento:

$ pip install /local/path/to/src[dev]

Você precisará das dependências de desenvolvimento do dncil para executar os testes e o linting conforme descrito abaixo.

Testes

Use o seguinte comando para executar os testes:

$ pytest /local/path/to/src/tests

Linting

Use os seguintes comandos para identificar erros de formatação:

$ 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

O dncil é baseado no código de análise de CIL encontrado no dnLib.

Baixar ferramenta