2016-05-17 7 views
2

Ich dekompilierte eine Release-Assembly mit ILSPy und ich habe Code wie folgt. Wenn ich das dekompilierte Projekt in VS 2013 öffne, erhalte ich für jede dieser Anweisungen einen Fehler.Ist diese Codezeile von ILSpy decompiler gültig?

using #j;//this line shows up as an error in VS2013 
using System; 

Der Fehler ist:

Präprozessordirektiven als erstes Nicht-Leerzeichen auf einer Linie

ich einen ähnlichen Fehler auch auf folgende Zeile erscheinen.

string path = #db.#ab(HttpUtility.UrlDecode(text)); 

Frage: Was ist die Bedeutung der Verwendung von # und wie kann ich korrigieren diese Fehler?

Ich habe auch festgestellt, dass einige dekompilierte Klassen Namen haben, beginnend mit und so einige Namespaces und Methodennamen. Ich habe noch nie eine solche Namenskonvention verwendet, daher ist es sehr verwirrend, wie "ILSpy" mit einem solchen Code aufwartete.

+1

Sieht so aus, als ob eine referenzierende DLL verschleiert ist. – vendettamit

+0

Ok. So wird verschleierter Code von Decompilern dekompiliert. Etwas Neues für mich. Vielen Dank. – Sunil

Antwort

8

Nein, es ist nicht gültig C#. Wahrscheinlich ist es der dekompilierte Code, der anfangs verschleiert wurde, also die Verwendung von Bezeichnern, die in IL, aber nicht in C# gültig sind.

In der Regel, wenn Sie verschleierten Code dekompilieren, tun Sie etwas gegen die Wünsche der ursprünglichen Autoren des Codes - also würde ich vorschlagen, nur nicht zu tun. Wenn Sie glauben, dass Sie einen legitimen Grund haben, den Quellcode für etwas zu bekommen, fragen Sie den Autor.

Konnte Sie in gültige C# konvertieren? Sicher - nehmen Sie einfach jeden -Vorbegriff Identifier und ordnen Sie ihn (konsistent) auf etwas anderes, z.

using hashj; 
... 

string path = hashdb.hashab(HttpUtility.UrlDecode(text)); 

... und schließlich werden Sie über eine Klasse laufen zu hashdb etc. Aber der Punkt der Verschleierung genannt #db, die Sie würden dann umbenennen ist dies ein schmerzhafter Prozess zu machen.

+0

Ok. Ich verstehe es. Danke für die ausgezeichnete Antwort. – Sunil