2011-08-02 2 views
3

je suis intéressé par décompilateurs comme ILSpy ou .Net Reflector etc.Comment C# travail decompiler

Quelqu'un peut-il me dire comment ces fichiers décompilateur convertir ou dll exe écrit en C# à son code source original?

+1

Le code .dll et .exe est en MSIL, à partir de laquelle vous pouvez assez facilement (par rapport à désassembler le code natif) Ild la source à n'importe quel langage .NET. – Grozz

Répondre

2

Parce que le C# complier génère une information de données méta et le code généré est un langage intermédiaire qui est traduit en code binaire lors de l'exécution de sorte que chaque dll ou exe généré par le compilateur peut être remaniée par réflecteur .net et le ILSpy peut

8

Il y a deux points clés, ici. Tout d'abord, IL, alors qu'un langage de niveau inférieur que C# ou VB.NET, est un niveau beaucoup plus élevé que l'assembleur ou le code machine. De nombreuses constructions de haut niveau sont toujours en place et peuvent être utilisées relativement facilement pour déterminer le flux et le fonctionnement du code.

L'autre point clé est qu'un décompilateur ne génère pas le code source d'origine. Il génère des constructions de langage de haut niveau à partir de l'IL de niveau inférieur, qui sont généralement très similaires au code source d'origine, mais pas identiques.