Laden...

.NET Assembly vor Disassemblern schützen

Erstellt von f_scheithauer@yahoo.de vor 19 Jahren Letzter Beitrag vor 16 Jahren 33.490 Views
Information von herbivore vor 18 Jahren

Dies ist ein Thread, auf den aus der FAQ verwiesen wird. Bitte keine weitere Diskussion, sondern nur wichtige Ergänzungen und diese bitte knapp und präzise. Vielen Dank!

F
f_scheithauer@yahoo.de Themenstarter:in
8 Beiträge seit 2005
vor 19 Jahren
.NET Assembly vor Disassemblern schützen

hallo,
kann mir jemand verraten, wie ich meine DLL und EXE Programme, die ich unter .NET erstellt habe, vor Disassemblern wie zum Beispiel dem Reflector for .NET schützen kann?

gruß falko

Kann mir endlich einer das Wasser reichen 🙂

T
81 Beiträge seit 2004
vor 19 Jahren

Wird zwar nicht die Antwort sein, die du hören willst, aber im Prinzip gar nicht.
Alles was du machen kannst, is den Code unlesbar machen,
dazu gibts sogenannte Obfuscator:

Dotfuscator

F
f_scheithauer@yahoo.de Themenstarter:in
8 Beiträge seit 2005
vor 19 Jahren
Danke

Danke

Kann mir endlich einer das Wasser reichen 🙂

381 Beiträge seit 2004
vor 19 Jahren

Tja leider hat Tankian Recht. Allerdings sehe ich das nicht als großes Problem. Java macht es schon seit vielen Jahren so, dort gibt es auch einen Zwischencode.

Es gibt allerdings neben den Dotfuscator noch einige weitere Tools um IL Code zu verschleiern, müsstest du mal bei Google schaun.

Wenn du sensiblen Code, sprich Daten die nicht jeder lesen darf im Assembly hast dann solltest du mit unmanaged Code arbeiten, sprich COM. Eine andere Möglichkeit gibt es bis dato noch nicht.

Mit freundlichen Grüßen

René Paschold
.NET Developer / Trainer / Speaker / Author /
Projectleader / Software-Architect


.blog http://www.rene-paschold.de/
.business http://www.smarthouse.de/

H
704 Beiträge seit 2003
vor 19 Jahren

Und wenn man gewisse Teile als Webservice implementiert und diese dann von seinem Programm aus aufruft? An den Code vom Webservice kommt man ja nicht so einfach ran.

Vorrausetzung ist halt Internetverbindung und ein eigener Server.

[last.fm](http://www.last.fm/user/hauptmanAlpha/)
381 Beiträge seit 2004
vor 19 Jahren

Klar das würde auch gehen. An die Daten kommt man nur dann ran wenn die entsprechenden Zugangsdaten vorhanden sind.

Denn Webservice kann man ja auch schützen sodas man für den Zugriff wiederrum Daten benötigt und dann sollte es klappen.

Aber wie du schon sagst dazu ist eine Inet Verbindung Vorrausetzung.

Mit freundlichen Grüßen

René Paschold
.NET Developer / Trainer / Speaker / Author /
Projectleader / Software-Architect


.blog http://www.rene-paschold.de/
.business http://www.smarthouse.de/

Q
992 Beiträge seit 2005
vor 18 Jahren

Lohnt sich der Einsatz eines Dotfuscators überhaupt?

Also den Code kann man sicherlich immer noch lesen. Zumindest unterstelle ich jemandem, der den Reflector benutzt auch die Fähigkeit sich nicht durch ein paar Gotos oder Überladungen/Umbennenungen verwirren zu lassen.

Außerdem hatte ich schon des öfteren Probleme, dass der Code nicht mehr ganz sauber lief, wenn man den Dotfuscator drüber hoppeln lies.

Gibt es Methoden den Code gegen Veränderung zu schützen? Automatische Datums- oder Checksummen-Überprüfung?

Grüße Christoph

Y
220 Beiträge seit 2004
vor 18 Jahren

Hallo!

Das ist eine sehr interessante Frage, aber ich denke absulute Sicherheit gibt es nicht. Selbst wenn du theoretisch einen HashWert deiner Datei generierst, und den Wert beim Programmstart abfrägst, bist du nicht sicher. Ein "Cracker" kann auch deinen gespeicherten HashWert verändern.

Man kann aber solchen Leuten das Leben schwer machen, da gab es einen Artikel auf safe.de (Die ShareWare-Vereinigung). Leider hab ich den Link verschmissen...

Aber wie gesagt, sicher kann man nie sein...

Just my 2 Cent,

Yahoo

1.549 Beiträge seit 2004
vor 18 Jahren

Genau sicher kann man nie sein. aber mit jeder hürde die man einbaut wird das Nivo das der "Hacker" haben muss um an deine Orginal daten zu kommen höher und irgendwann lohnt es für gewönlich nichtmehr also wen du z.B Prüfsdummen über das Erstellungsdatum der Datei erstelst dazu noch ein Dotfuscator und eine Prüfsumme auf die Datei selbst.

Fals das nicht reicht Teile in einen Webservice auslagern da ist der Code dann so sicher wie es nur geht

Wir Arbeiten eigendlich nicht wir nehmen nur das geld

Q
992 Beiträge seit 2005
vor 18 Jahren

Erklär das mit dem Webservice mal ein paar zig-tausend Anwendern des Produktes...
sie müssen leider immer mit dem Internet verbunden sein, weil wir ab sofort eine neue Technologie einsetzen...
Das wäre jawohl der Super-Gau!

Gibt es in .Net nichts eingebautes um sicherzustellen, dass einmal verteilte Anwendungen/Assemblies/DLLs nicht mehr verändert werden?

1.549 Beiträge seit 2004
vor 18 Jahren

Erklär das mit dem Webservice mal ein paar zig-tausend Anwendern des Produktes...
sie müssen leider immer mit dem Internet verbunden sein, weil wir ab sofort eine neue Technologie einsetzen...
Das wäre jawohl der Super-Gau!

Bei Steam und HL2 Gehts doch auch 😉

Nein im ernst verstehe ich schon was du meinst aber es kommt immer auf die anwendumg an.

Wir Arbeiten eigendlich nicht wir nehmen nur das geld

Q
992 Beiträge seit 2005
vor 18 Jahren

Hat schon jemand Erfahrungen mit anderen Obfuscatorn gemacht.

Ich denke, dass dies eine ganze wichtige strategische Frage bei der Entwicklung und Verteilung von .Net-Programmen ist.

Grüße Christoph

4.506 Beiträge seit 2004
vor 18 Jahren

Hallo alle C#-ler!

Nach etwas längerer Abstinenz melde ich mich zurück, aber das tut hier erstmal nix zur Sache!

Ich habe eine Frage genau zu diesem Thema, vielleicht führt das etwas weiter...

Von .NET wird zunächst einmal IL erzeugt, das ist ja klar. Aber wenn ich die Exe, die IL enthält ausführe, dann wird sie doch zur Laufzeit in echte Maschinensprache übersetzt, oder nicht?

Der Prozessor versteht doch nur 0 und 1! Gibt es keine Möglichkeit, das übersetzte Programm nicht auf den Prozessor zu geben, sondern umzuleiten und dann in ein eigenes File zu schreiben?

Dann hätte man doch wieder eine echte EXE, oder?

Klar gehen dann auch alle Vorteile die IL bietet verloren, aber für sensible Daten wäre das doch ein Lösungsanstz!

Vielleicht kennt sich jemand in diesem Bereich aus, der dazu etwas sagen könnte...

Ciao
Norman-Timo

A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”

Q
992 Beiträge seit 2005
vor 18 Jahren

Eigentlich ja. Aber du vergisst, dass der IL-Compiler(von IL zu Maschinensprache) auch Typ-Sicherheit, Sicherheitsbestimmungen usw. prüft. Außerdem sind einige dynamische Dinge nur in so einer Form zu lösen und ganz schwer in Maschinensprache.

Ich denke auch, dass man es vielleicht irgendwie einbauen könnte, aber das Framework wird man aufgrund der Klassen trotzdem brauchen, oder soll man die statisch linken?

Grüße Christoph

P.S.: Dotfuscator 3.0 ist draußen!

1.457 Beiträge seit 2004
vor 18 Jahren

Ich verfolge diesen Thread schon seit Anfang an und habe bis heute nicht verstanden, warum der Protector von Remotesoft nicht erwähnt wird. Dieser soll laut Remotesoft eine bessere Sicherheit bieten als Obfuscator.

S
8.746 Beiträge seit 2005
vor 18 Jahren

Zu RemoteSoft:

A disadvantage of their solution is also that the solution is: BeginQuote This method is not compatible
across .NET Framework Service packs. For example EXE files created using .NET
Framework Service Initial Release do not work with installations of Service
Pack 2. Because many users may
have different installations of the framework installed, this solution
becomes useful only in very controlled environments - but usually in these
environments protection is not strongly needed. EndQuote

S
8.746 Beiträge seit 2005
vor 18 Jahren

Eine wirklich GUTE Lösung kann eigentlich nur von MS kommen. Es muss möglich sein, einen Custom-Loader im System zu installieren, der das Programm lädt und entschlüsselt. Momentan bauen die Lösungen (RemoteSoft) ja ein normales Win32-EXE, worin der IL-Code verschlüsselt abgelegt ist. Schöner wäre, den Code bereits verschlüsselt auszuliefern ohne auf Win32-EXE zurückgreifen zu müssen.

E
100 Beiträge seit 2005
vor 18 Jahren

Wie weiter oben schon gesagt, gibt es (lokal) keine andere (sinnvolle) Möglichkeit als mittels der genannten Programme das direkte lesen zu erschweren. Selbst wenn du kritisches als COM oder über ne normale DLL machst, hast du keine absolute Sicherheit. Das geht nicht.

Das einzige was du erreichst, ist die Entwickungskosten hochzutreiben, und (was noch schlimmer ist) Frust oder Ablehnung beim Anwender zu erzeugen, indem du z.B. permanente Internetverbindungen verlangst, oder das deinstallieren von anderen Tools. (Siehe Starforce-Kopierschutz, oder Halflife 2)

Das es definitiv nicht geht, siehst du daran, das seit dem C64er solche Methoden immer neu erfunden, und Spiele trotzdem gecrackt werden. Das Ergebnis ist bei mir z.B. das ich HL2 nicht kaufen werde, genausowenig wie Programme die verlangen das ich z.B. DeamonTools deinstalliere.

--
Man kann Scheisse nicht polieren!

1.457 Beiträge seit 2004
vor 18 Jahren

Hallo an alle,

ich wollte schauen wie die .NET Anwendungen da draußen geschützt sind und hab mit dem Reflector einige Anwendungen geöffnet.

Eine Anwendung konnte der Reflector nicht disassemblieren und auch keine brauchbaren Informationen rauslesen.

Nun würde ich gerne wissen welche Schutzmechanismen dahinterstecken, um auch meine Anwendungen damit zu schützen. Es handelt sich um die Freeware Anwendung nLite.

1.457 Beiträge seit 2004
vor 18 Jahren

Hallo an alle,

Da dieses Thema im Moment sehr spannend für mich geworden ist, würde ich gerne wissen ob sich in diesem Umfeld etwas getan hat.

Gibt es gute Software, mit der ich Anwendungen schützen kann?

S
8.746 Beiträge seit 2005
vor 18 Jahren

Eine Möglichkeit ist immer, die DLL zu verschlüsseln, zur Laufzeit zu entschlüsseln und in die AppDomain zu laden.

871 Beiträge seit 2005
vor 18 Jahren

Hallo,

was ich vor ein paar Tagen gefunden habe: http://madebits.com/netz/index.php

Es handelt sich dabei um ein Tool welches .NET Assemblys komprimiert und einen eigenen (nicht nativen, sondern in .NET geschriebenen) Loader vor den komprimierten IL Code stellt. Da das Tool als Open Source vorhanden ist, wäre es mit ein wenig aufwand sicherlich auch möglich den komprimierten IL Code auch noch zu verschlüsseln (wobei dann die Frage bleibt wohin mit dem Schlüssel; Eventuell Asymetrische Verschlüsslung und die Lizenznummer als Key benutzen?)

Aber gegen Otto-Normal Reflection Benutzer ist es in der derzeitigen Version schon ziemlich effektiv da man ja nur den Code vom Loader zu sehen bekommen und sich etwas basteln müsste um den komprimierten MSIL Code aus der Assembly rauszubekommen.

Grüsse, Egon

402 Beiträge seit 2005
vor 18 Jahren

Hallo, ich habe auch mal Xenocode getestet, ebenso wie Dotfuscator. Die Community-Editionen beider sind ja eine echt spassige Sache, aber leider bietet keine von beiden String-Verschlüsselung. Dazu braucht man immer die Pro Version. Die kostet aber teilweise mehr als die IDE! 8o Ich muss sowieso feststellen, dass bei .NET irgendwie alles teuerer geworden ist, als zu Win32 Zeiten, seien es Klassenbibliotheken oder Tools.

Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.

402 Beiträge seit 2005
vor 18 Jahren

So habe mal Xenocode Pro getestet. Das Teil taugt schon gut was. Es verändert auch die gesamte Ablaufsteuerung und verschlüsselt strings & Co. Ausserdem kann es im "Agressivmode" alles unleserlich machen, incl. Functionsnamen & Co. Im "Conservativemode" für Shared Assemblys kann man zwar noch die Funktionsnamen erkennen, aber ich habe selbst in den allereinfachsten meiner Funktionen nichts mehr erkannt. Dafür wird die Assembly ein wenig grösser. Zweiter Vorteil ist, dass Xenocode eine Single-Assembly/Exe Funktion mitbringt. Die kann sogar das .NET Framework mit einbinden. Naja, schaut mal selber, ich hab es bestellt, denn auch der Preis ist, gegenüber DotFuscator, sehr gut (399$)!

Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.

S
1.047 Beiträge seit 2005
vor 18 Jahren

dieser xenocode fox hat ja verblüffende ähnlichkeit mit reflector o.O
arbeitet lutz roeder mit denen zusammen?

die preise sind wirklich recht happig...
bei .net kann man eben ne menge geld machen durch schutz vor disassembler und custom controls

402 Beiträge seit 2005
vor 18 Jahren

Naja, der Reflector in VS 2005 und Delphi 2005+ sieht auch nicht anders aus. Bei Xenocode meinte ich natürlich den "PostBuild".

Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.

191 Beiträge seit 2006
vor 17 Jahren

Hallo,
ich wollte mal fragen, ob es irgendwelche Freeware Obfuscatoren gibt, die wenigstens die Funktionsname (Variablen usw) umbenennen.

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo nic4x4,

siehe FAQ: .net Assembly vor Disassembling schützen (die letzten beiden Links).

herbivore

S
1.047 Beiträge seit 2005
vor 17 Jahren

sollten wir den thread dann nicht mal schließen? der link zur faq ist doch ein guter abschluß

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo sheitman,

naja, wenn es nichts mehr zu dem Thema zu sagen gibt, wird es keine weiteren Beiträge geben. Quasi eine Selbstregulierung, ohne das man das Thema zu schließen braucht. Schließen braucht man ja nur dann, wenn (weitere) störende Beiträge zu erwarten sind. Die Befürchtung habe ich nicht. Außerdem können sich zu dem Thema ja neue Aspekte ergeben, z.B. weil neue Obfuscatoren oder Obfuscator-Techniken entwickelt wurden/werden. Dann wäre es sogar störend, wenn der Thread geschlossen wäre.

herbivore

S
1.047 Beiträge seit 2005
vor 17 Jahren

ok, wenn du das so siehst macht es wohl mehr sinn den thread offen zu lassen 🙂

W
558 Beiträge seit 2006
vor 16 Jahren

Über folgenden Obfuscator bin ich gerade gestoßen:

Salamander .NET Obfuscator
http://www.remotesoft.com/salamander/obfuscator.html

This trial version contains full functionalities, but it is only meant for your internal evaluation purpose, and thus you must not distribute the obfuscated code.

grüße
webstarg

270 Beiträge seit 2005
vor 16 Jahren

Ok der Thread ist schon was älter aber ich finde das
dieser Artikel das hier besprochen verdeutlicht.

MS Artikel zu DecompilerUndObfuscator

mfg Hulk