Wie geschützt ist die IL?

Hallo,

mich beschäftigt die Frage, wie die IL geschützt ist vor anderen, die anhand dessen Rückschlüsse auf den Quellcode bzw. den Aufbau eines Programmes ziehen wollen. Ist sie speziell verschlüsselt oder was für Vorkehrungen hat Microsoft da getroffen?

Gruß
ALex

Hi

Leider gar nicht. Assemblies lassen sich sehr einfach de-compilieren.
es gibt aber obfuscatoren/protectoren die den code verhunzen.

remotesoft http://www.remotesoft.com/ ist ein starker anbieter dafür… gibt aber auch andere.

gruss

giuseppe

*keuch*

danke für die Antwort… und das erfahre ich mal so ganz nebenbei?? Ich meine, ich habe mittlerweile schon viel über .NET gelesen, aber das stand nirgends. Sorry, ich bin gerade etwas aufgebracht, das ist ja ein dicker Hund!

Jetzt wird mir klar, warum noch keine ernstzunehmenden Anwendungen für .NET zu finden sind. Welcher Entwickler hat schon Lust, dass seine Codes so einfach und komfortabel einzusehen sind?! Da würde ich mal sagen, dass Microsoft da aber ganz schöne Sch… gebaut hat.

Weiß jemand näheres darüber?

Gruß
Alex

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi

Jetzt wird mir klar, warum noch keine ernstzunehmenden
Anwendungen für .NET zu finden sind.

Hmm… Visual Studio.NET, SharePoint Portal Server und Microsoft Reporting Services wurden mit .NET geschrieben… ich glaube diese Anweungen sind sehr wohl ernst zu nehmen :wink:

Welcher Entwickler hat

schon Lust, dass seine Codes so einfach und komfortabel
einzusehen sind?! Da würde ich mal sagen, dass Microsoft da
aber ganz schöne Sch… gebaut hat.

Ist bei Java genau so… Code einsehen wird überbewertet meiner meinung nach…

Gruss

Hi,

Hmm… Visual Studio.NET, SharePoint Portal Server und
Microsoft Reporting Services wurden mit .NET geschrieben…
ich glaube diese Anweungen sind sehr wohl ernst zu nehmen :wink:

Die kenne ich nicht, außer Visual Studio und das ist selbst eine .NET-Anwendung? Naja, ich dachte eher an Programme wie Photoshop oder aufwändige CAD Programme u.s.w. wo die Entwickler (wie in VS.NET sicher auch) Algorithmen hineingesteckt haben, an denen lange gearbeitet wurde und die sie sicher nicht gerne abgekupfert irgendwo wiederfinden wollen.

Welcher Entwickler hat
schon Lust, dass seine Codes so einfach und komfortabel
einzusehen sind?! Da würde ich mal sagen, dass Microsoft da
aber ganz schöne Sch… gebaut hat.

Ist bei Java genau so… Code einsehen wird überbewertet
meiner meinung nach…

Ich habe mich jetzt auch wieder etwas beruhigt :smile: Aber dass du der Meinung bist, dass das überbewertet wird verstehe ich nicht ganz. Bist du der Meinung, dass es in Ordnung ist, dass abgekupfert wird? Auf mich macht es irgendwie einen parasitischen Eindruck, wenn ich höre, dass in manchen Softwarefirmen sogar ganze Abteilungen dazu da sind, die Funktionsweise anderer Programme auszuspionieren.

Übrigens, Code einsehen ist eine Sache, aber soweit ich das verstanden habe, kann man doch den Code abändern und wieder zurück kompilieren. Und damit schön Kopierschutz knacken, oder habe ich da etwas falsch verstanden?

Gruß
Alex

Disassemblieren kann man alles irgendwie, das ist kein Fehler in .NET! Nur wird es derjenige schwer haben, aus dem Assemblercode irgendwelche Algorithmen zu extrahieren. Wenn du schon mal Assembler gesehen hast, weißt du, dass man wahrscheinlich lieber anderen Beschäftigungen nachgehen würde, als sich daraus den ursprünglichen Algorithmus zusammenzubasteln. Es ist ja schließlich nicht so, dass sich eine EXE wieder 1:1 in den C++ oder C# oder was auch immer Quellcode zurückkompilieren ließe. Derartige Methoden gibt es nicht. Andererseits gibt es keine wirklich wirksamen Schutzmaßnahmen, um eine Einsicht in den Assemblercode zu verhinden. Das Programm muss ja schließlich während der Ausführung als Maschinencode vorliegen. Spätestens dann kann ich das Ding problemlos mit geeigneten Debuggern auseinandernehmen. Das ließe sich tatsächlich nur durch das berüchtigte TCPA verhindern. Wir wollen jedoch alle hoffen, dass es nie zur Einführung desselben kommen wird.

Gruß,
Johannes

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

Disassemblieren kann man alles irgendwie, das ist kein Fehler
in .NET! Nur wird es derjenige schwer haben, aus dem
Assemblercode irgendwelche Algorithmen zu extrahieren. Wenn du
schon mal Assembler gesehen hast, weißt du, dass man
wahrscheinlich lieber anderen Beschäftigungen nachgehen würde,
als sich daraus den ursprünglichen Algorithmus
zusammenzubasteln.

Dagegen hätte ich auch nichts auszusetzen, ich hatte schonmal in Assembler programmiert (C64 :wink:) das ist wirklich zu unübersichtlich um etwas zurück herleiten zu können.

Was ich allerdings nicht gedacht hätte, ist, dass in dem IL-Code sogar meine Variablenbezeichnungen stehen, die ja sehr vielsagend sein können. Das wusste ich nicht und verstehe auch nicht, warum das so ist, da ja keine Ausführungsumgebung interessiert, ob eine Variable „Vorname“ oder „hdfhjk“ heißt. Ich hätte es also begrüßt, wenn solch ein Obfuscator automatisch mit eingebaut wird. Aber jetzt habe ich mit der Dotfuscator Community Edition auch erstmal eine Möglichkeit gefunden, die ok ist.

Es ist ja schließlich nicht so, dass sich
eine EXE wieder 1:1 in den C++ oder C# oder was auch immer
Quellcode zurückkompilieren ließe. Derartige Methoden gibt es
nicht. Andererseits gibt es keine wirklich wirksamen
Schutzmaßnahmen, um eine Einsicht in den Assemblercode zu
verhinden. Das Programm muss ja schließlich während der
Ausführung als Maschinencode vorliegen. Spätestens dann kann
ich das Ding problemlos mit geeigneten Debuggern
auseinandernehmen. Das ließe sich tatsächlich nur durch das
berüchtigte TCPA verhindern. Wir wollen jedoch alle hoffen,
dass es nie zur Einführung desselben kommen wird.

Über TCPA bin ich nur schlecht informiert. Soweit ich das sehe, betrifft dieses hardwarebasierte Verfahren das komplette Betriebssystem. Dagegen bin ich auch, da das zu leicht missbraucht werden kann. Aber dass ein Programm als Blackbox gehandhabt wird, dagegen hätte ich nichts (was es z.B. im Netz anstellt, könnte man ja dann immer noch feststellen). Aber ob das möglich ist, ist natürlich fraglich. Und das Betriebssystem muss natürlich ausgewogen und vertrauenswürdig sein, also transparent genug und gleichzeitig geschützt genug…

Gruß
Alex

Es ist ja schließlich nicht so, dass sich

eine EXE wieder 1:1 in den C++ oder C# oder was auch immer
Quellcode zurückkompilieren ließe. Derartige Methoden gibt es
nicht.

Leider Doch! c# (und auch Java - irrtum vorbehalten) lassen sich wieder zurück in den Quellcode zurückkompilieren. Versuch mal hier eine
.NET Assmembly hochzuladen http://www.remotesoft.com/salamander/index.html… das resultat ist erschreckend :wink:

gruss

Das ist mir neu. Gilt aber nur für C#, nehme ich an?

Leider Doch! c# (und auch Java - irrtum vorbehalten) lassen
sich wieder zurück in den Quellcode zurückkompilieren.

Das ist mir neu. Gilt aber nur für C#, nehme ich an?

Dies gilt für alle .NET Sprachen egal ob vb.net, c#, oder delphi.net… etc

gruss