2009-08-25 8 views
1

Je suis studing IL. J'aime l'outil .Net Reflector de RedGate (initialement Lutz). J'ai déjà les livres de Serge Lidin et Ecma-335. Il semble que ces choses sont tout ce que nous avons à travailler avec IL (sauf ILAsm et ILDasm, bien sûr).Obtenir le code IL à partir du fichier binaire DLL

Ma tâche consiste à analyser le fichier binaire d'assemblage et à obtenir le code IL. Il est évident que l'assemblage est un fichier binaire; par conséquent, c'est juste une chaîne d'octets. Pour faire ce que je veux j'ai besoin de connaître la structure d'assemblage: quels en-têtes existent, combien d'octets ils occupent, les octets en octets pour les lire octet après octet, etc

Le livre de Lidin le décrit, mais il n'est pas 100% clair pour moi. Quelqu'un at-il essayé d'analyser la DLL en tant que flux d'octets? Pour avoir des métadonnées et du code IL comme flux d'octets, puis analyser le flux d'octets IL pour obtenir la source IL? Je ne veux pas utiliser la réflexion ici; Je voudrais plutôt travailler avec le fichier binaire.

Le mono Cecil fait-il la même chose? Même si c'est le cas, je voudrais savoir comment le faire.

Et oui, j'essaie de créer une autre roue comme celle de .NET Reflector et je veux savoir comment elle est faite. Comme quelqu'un a dit: "Lutz ne devrait pas nécessairement être le seul homme au monde qui sait comment le faire".

BTW, comment fonctionne ISDasm? A-t-il été codé en .net?

Des idées, des ressources, des exemples?

Merci.

Répondre

3

Mono.Cecil fait exactement ce que vous voulez faire. Donc, vous voudrez peut-être jeter un oeil sur le code source.

En fait, il existe un projet en cours nommé Cecil.Decompiler, à partir de Jb Evain, basé sur Cecil, qui est un décompilateur .NET open source.

+0

Savez-vous où puis-je télécharger les sources? L'URL suivante http://anonsvn.mono-project.com/source/trunk/cecil/decompiler ne fonctionne pas pour moi. Merci. – Antipod

+0

Eh bien, cela semble fonctionner. Puis-je vous demander de réessayer? –

+0

Oui, ça marche maintenant. Je vous remercie. – Antipod

0

Vous pouvez utiliser directement ildasm:

ildasm.exe MyFile.dll /output:MyFile.il 

Il peut être automatisé à partir de votre programme.

+0

Imaginez que je veux écrire mon propre fichier ildasm.exe. Juste pour comprendre la structure IL et DLL mieux. – Antipod

Questions connexes