Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
dncil — La bibliothèque open-source de l'équipe FLARE pour désassembler les instructions Common Intermediate Language (CIL). | Kitploit
Outils/GitHubGitHub/mandiant/dncil
Rétro-ingénierieAnalyse de MalwareAnalyse de Binaires
GitHubmandiant/dncil

dncil

La bibliothèque open-source de l'équipe FLARE pour désassembler les instructions Common Intermediate Language (CIL).

Voir le dépôt
17820il y a 26 joursVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

dncil

PyPI - Python Version Last release CI Downloads License

dncil est une bibliothèque de désassemblage du langage intermédiaire commun (CIL) écrite en Python qui prend en charge l'analyse de l'en-tête, des instructions et des gestionnaires d'exceptions des méthodes managées .NET. Les données analysées sont exposées via une API orientée objet pour vous aider à développer rapidement des outils d'analyse CIL avec dncil.

Pourquoi Python ? Les bibliothèques existantes qui prennent en charge le désassemblage CIL, comme dnLib, sont écrites en C#. Pour exploiter ces outils, vous devez créer des applications C#, ce qui nécessite une expérience du développement C#. Avec dncil, une alternative pure Python, vous :

  1. n'avez pas besoin d'expérience C# pour analyser le CIL par programmation.
  2. pouvez développer et tester rapidement vos outils d'analyse CIL.
  3. pouvez facilement intégrer vos outils d'analyse CIL à des projets Python existants.

Exemple

Le script d'exemple print_cil_from_dn_file.py utilise dncil avec la bibliothèque d'analyse .NET dnfile pour désassembler les méthodes managées trouvées dans un exécutable .NET. Voyons ce qu'il peut faire.

Tout d'abord, compilons le code source C# suivant :

root@kitploit:~
using System;	

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

La compilation produit un exécutable PE contenant des métadonnées .NET qui indiquent au Common Language Runtime (CLR) comment exécuter notre code. Nous utilisons dnfile pour analyser ces métadonnées, ce qui nous donne l'offset de notre méthode managée Main. Nous utilisons ensuite dncil pour désassembler et afficher les instructions CIL stockées à cet emplacement.

Voyons ce qui précède en action :

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            

Notre méthode Main est représentée par la classe CilMethodBody. Cette classe contient des données qui incluent l'en-tête, les instructions CIL et les gestionnaires d'exceptions d'une méthode managée donnée. Elle expose également diverses fonctions utilitaires :

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(.....*

Chaque instruction CIL trouvée dans notre méthode managée Main est représentée par la classe Instruction. Cette classe contient des données qui incluent l'offset, le mnémonique, l'opcode et l'opérande d'une instruction CIL donnée. Elle expose également diverses fonctions utilitaires :

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

Installation

Pour installer dncil, utilisez pip pour récupérer le module dncil :

root@kitploit:~
$ pip install dncil

Pour exécuter les scripts d'exemple, assurez-vous d'installer dnfile. Vous pouvez également installer dncil avec les dépendances de développement comme décrit dans la section Development ci-dessous.

Voir print_cil_from_bytes.py pour un exemple rapide d'utilisation de dncil pour afficher les instructions CIL trouvées dans un flux d'octets contenant une méthode managée .NET.

Développement

Si vous souhaitez consulter et modifier le code source de dncil, vous devrez le télécharger depuis GitHub et l'installer localement.

Utilisez la commande suivante pour installer dncil localement avec les dépendances de développement :

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

Vous aurez besoin des dépendances de développement de dncil pour exécuter les tests et le linting comme décrit ci-dessous.

Tests

Utilisez la commande suivante pour exécuter les tests :

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

Linting

Utilisez les commandes suivantes pour identifier les erreurs de format :

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édits

dncil est basé sur le code d'analyse CIL trouvé dans dnLib.

Télécharger l’outil