In dem Zusammenhang muss ich einmal das Thema
Obfuscation ansprechen, um sicherzugehen das dass dahinterstehende Problem bekannt ist. Sollte dies der Fall sein, kann dieser Beitrag gerne ignoriert werden. Das ganze hat zwar direkt nichts mit der Unstrukturierung des Quelltextes zu tun, aber vielleicht im weiteren Sinne mit der Umstrukturierung eines ganzen Projektes. Ich komme darauf, da dies bei uns einer der nicht unerheblichen Unterschiede zwischen den Debug und Release Kompilaten ist.
Also, generell ist es bei .NET Programmen (aber auch bei anderen Plattformen wie JAVA) so, dass die Quelltexte nicht in eine Klassische EXE übersetzt werden, welche so vom Betriebssystem ausgeführt werden kann, sondern in einem Zwischencode (auch wenn die Resultierende Datei EXE heißt und sich starten lässt). Dies erlaubt es, die finale Übersetzung des Programms erst beim ersten Starten zu erledigen und dabei gezielt auf das Zielsystem zu optimieren.
Der Nachteil dabei ist aber, dass man den Zwischencode auch wieder Problemlos in den Quelltext zurückverwandeln kann. Somit ist jedes .NET Programm erst einmal Quasi Open Source, weil jeden mit wenig Aufwand an die Quelltexte kommt.
Hier gibt es z.B. ein kostenloses Tool, mit dem man dass für die eigenen Programme überprüfen kann.
Da es prinzipbedingt ist, lässt sich das erzeugen des Zwischencodes auch nicht verhindern. Was man aber mach kann ist den Release Zwischencode zu verschleiern. Man lässt also ein zusätzliches Programm drüber laufen, dass alle Variablen, Objekte und Funktionen in völlig unleserlichen Kram umbenennt. Darüber hinaus, werden bei guten Tools auch noch tonnenweise anderer Tricks angewendet um den aus dem Zwischencode gewinnbaren Quelltext unleserlich zu machen. So werden z.B. Strings Verschlüsselt, Schleifen durch Gotos ersetzt, bekannte Codeschnipsel durch schwerer verständliche ersetzt, die das gleiche leisten usw.
Wenn man verhindern möchte, dass der eigene Quelltext in die Hände Dritter gerät, ist dies für .NET Entwickler die einzige Möglichkeit. Es gibt
einige Programme die dies mal mehr mal weniger gut leisten. Ich persönlich habe sehr gute Erfahrungen mit dem
Eazfuscator.NET gemacht.