Laden...

IL Code anschauen

Erstellt von serial vor 16 Jahren Letzter Beitrag vor 16 Jahren 2.037 Views
S
serial Themenstarter:in
902 Beiträge seit 2007
vor 16 Jahren
IL Code anschauen

Hallo,

hab grad eine Diskussion mit meinem Kollegen, der meint, man könne einfach den Code einer .net Anwendung anschauen!

Ich meine nein!
Klar habe ich per ILDASM die möglichkeit mir die metadaten anzuschauen, aber er meint den richtigen sourcecode!

Meine frage: geht das wirklich einfach? (wäre ja blöd, könnte man ja einfach programme copy & pasten)

R
494 Beiträge seit 2006
vor 16 Jahren

Geht.
Stichwort Reflector.

/edit: [FAQ] .net Assembly vor Disassembling schützen

3.971 Beiträge seit 2006
vor 16 Jahren

Wenn die Debug-Informationen (pdb-Dateien) vorhanden sind, dann sieht man deinen Quellcode. (Das mach Visual Studio ja genau so).

Mit dem .Net Reflector ist es aber auch möglich den Quelltext auszulesen, dieser wandelt den IL-Code zurück in deine gewünschte Programmiersprache (VB, C#, C++)

Es gibt 3 Arten von Menschen, die die bis 3 zählen können und die, die es nicht können...

230 Beiträge seit 2007
vor 16 Jahren

Original von serial
Klar habe ich per ILDASM die möglichkeit mir die metadaten anzuschauen, aber er meint den richtigen sourcecode!

Mit dem SuppressIldasmAttribute kann man die Disassemblierung durch ILDASM ausschalten. Den richtigen Sourcecode hat nur der Entwickler. Inlinekommentare und die Original Bezeichner der Variablen und Methoden können nicht durch Decompiler reproduziert werden. Obfuskatoren verstümmeln den Code zusätzlich.

369 Beiträge seit 2006
vor 16 Jahren

Allerdings zeigt dir Reflector nie den tatsächlichen Quellcode. Die Rückumwandlung ist immer verlustbehaftet. Es fehlen selbstverständlich jegliche Kommentare und außerdem ist Reflector nicht immer in der Lage jedes Sprachkonstrukt korrekt rückzuwandeln. Das beste Beispiel sind compilergenerierte Iteratoren (C#: yield return). Bei denen liefert Reflector zwar logischen IL-Code, aber den C#-Code würde niemand so schreiben. Der Iterator wie er im tatsächlichen Quellcode steht ist nur noch schwer zu erahnen.

S
8.746 Beiträge seit 2005
vor 16 Jahren
Mit dem SuppressIldasmAttribute kann man die Disassemblierung durch ILDASM ausschalten.

Hilft nicht gegen den Reflector, verhindert aber die Obfuskation.

1.820 Beiträge seit 2005
vor 16 Jahren
Obfuskation und Reflektion

Hallo!

Ich habe mal eine Frage bzgl. Obfuskatoren.
Wenn ich eine obfuskierte (schreibt man das so?) Assembly weitergebe, kann diese dann ein anderer z.B. in Visual Studio einbinden, um z.B. dort definierte Interfaces zu verwenden?

Sonst wären wahrscheinlich PlugIn-Systeme in obfuskierten Programmen garnicht mehr möglich, oder?

Nobody is perfect. I'm sad, i'm not nobody 🙁