.NET-Code, unfreiwilliger Open Source?

Es ist schon ein wenig gewöhnungsbedürftig, der Gedanke, dass der gesamte Code eines mühevoll entwickeltes Programms quasi von jedem Nutzer eingesehen werden kann. „Open Source“ ist an dieser Stelle sicherlich zu viel gesagt, denn nur weil der Quellcode (mit Hilfsmitteln) einsehbar ist, heißt dies nicht, dass dieser auch für andere Zwecke als die Programmausführung genutzt werden darf.

Aber ein einsehbarer Quellcode erleichtert die Spionage, Piraterie und sonstigen Missbrauch enorm.
Aber warum kann der Quellcode eines .Net Programms so einfach eingesehen werden? Das Problem existiert bei .NET Sprachen (und auch Java) zum einen, weil die Quellcode in eine Zwischensprache (IL, Intermediate Language) übersetzt wird und zum anderen an Reflections.

Die Zwischensprache ist bereits für den Menschen lesbarer als Assemblercode und lässt sich verhältnismäßig einfach wieder zurück übersetzen, denn die Zwischensprache spricht anders als Assemblercode nicht einzelne Register an (kann sie auch nicht, denn sie ist eine hardware-universelle Sprache), sondern liest sich auf einem viel höheren Abstraktionslevel.

Mit welchen Programmen kann man an den .NET Quellcode nur über eine ausführbare Datei gelangen?
Dafür gibt es das kostenlose Programm Reflector for .NET sowie das kostenpflichtige Programm Remotesoft .NET Explorer.

Auch ohne diese Programme ist es Fakt, dass der Quellcode von in .NET Sprachen geschriebenen Programmen mit genügend Aufwand zu dekompilieren ist. Wie kann sich ein Unternehmer davor schützen? Es ist ein ganz natürliches Interesse eines Unternehmers, dass ein teuer entwickeltes Programm mit neuesten Algorithmen nicht durch Quellcodespionage einfach nachgebaut werden kann.
Ein wichtiger Aspekt ist hierbei allerdings die Usability, welche nicht (oder nur im unwesentlichen Umfang) unter dem Schutz vor Spionage leiden sollte. Der Programmbenutzer sollte von den Schutzmaßnahmen nichts merken und sich wegen diesen nicht einschränken müssen.

Das einfachste Verfahren zur Erschwerung des wirksamen Quellcodeverständnisses ist die Obfuskation. Hierfür gibt es bestimmte Programme. Die Entwickler können aber auch selbst eine gewisse (und vielleicht sehr effektive) Verwirrung hervorrufen, indem sie Methoden gezielt falsch benennen und falsche Fährten legen. Dies sollte aber erst nach kompletter Fertigstellung geschehen und erfordert eine gute Eigendokumentation.

Die weitergehende Variante ist die Kompilierung von .NET Quellcode in Maschinencode. Dies ist beispielsweise mit dem Salamander .NET Native Compiler der Firma Remotesoft möglich und hat den positiven Nebeneffekt, dass kein .NET Framework zur Ausführungszeit benötigt (aber dafür auf die Plattformunabhängigkeit verzichtet) wird.
So ist der Quellcode dann etwa vergleichbar gut geschützt, wie z. B. in C geschriebener und kompilierter Code.

Weiterführende Webseiten:
http://www.remotesoft.com – Remotesoft
http://www.red-gate.com/products/reflector/ – .NET Reflector (kostenlos)

1 Gedanke zu „.NET-Code, unfreiwilliger Open Source?“

Kommentare sind geschlossen.