Premièrement, vous enfreignez le contrat de licence en essayant de désosser leur code.
f. Démontage. Vous ne pouvez pas désosser, décompiler, désassembler ou de toute autre manière essayer d'accéder à l'information concernant la construction du produit.
Ceci est dû au fait que .NET permet d'avoir beaucoup plus que a-z dans les noms de variables. Vous pouvez lire à ce sujet dans la section MSDN sur Identifiers (C#). Visual Studio n'aimera pas les variables et se plaindra, mais elles sont parfaitement valides dans IL (tout en n'étant pas valide en C#). Regarder avec d'autres outils ou jeter en hexadécimal, vous pouvez voir les variables ont été obscurcies et sont des choses comme
qui est en fait le caractère ACK
^F suivi par le caractère «Début de texte» qui ressemble à l'espace caractère mais n'est pas le caractère d'espace. Les autres caractères utilisés incluent le caractère de retour arrière.
L'IL pour le code ci-dessus va être quelque chose comme
.field private static initonly string '\u0001'
.field private static initonly string '\u0002'
.field private static initonly string '\u0003'
.field private static initonly string '\u0004'
.field private static initonly string '\u0005'
.field private static initonly string '\b'
.field private static initonly string '\u0002\u2000'
.field private static initonly string '\u0003\u2000'
.field private static initonly string '\u0005\u2000'
.field private static initonly string '\b\u2000'
Vous avez l'idée.
Je voudrais savoir ce qu'ils ont spécifiquement utilisé pour obscurcir ce code (parce que ça a l'air amusant!).Le code a été clairement généré avec quelque chose comme http://reflexil.net/ qui permet à la DLL compilée de conserver des indications sur le nom de la variable (mais les transforme en absurdités), c'est pourquoi le décompilateur affiche tous les noms étranges (le décompilateur pense qu'il est cleaver en conservant les noms des variables mentionné dans la DLL).
Il semble que la DLL ait été obscurcie, ce qui rend difficile la compréhension du code décompilé. – Dirk
Il est plus que probable qu'il y ait * un * identifiant valide là-bas, mais pas un que vous pouvez facilement voir (pensez à Unicode). – Lloyd
Essayez-le avec .NET Reflector http://www.red-gate.com/products/dotnet-development/reflector/ et postez-le ici. Pas de problèmes pour moi avec dotPeek. Je n'ai jamais vu chth comme vous avez rencontré. –