.NET Verschleierungs Tools / Strategie

stimmen
146

Mein Produkt hat mehrere Komponenten: ASP.NET, Windows Forms App und Windows-Dienst. 95% oder so der Code in VB.NET geschrieben.

Für geistiges Eigentum Gründen muss ich den Code verschleiern, und bis jetzt habe ich eine Version von Dotfuscator wurden verwendet, die jetzt mehr als 5 Jahre alt ist. Ich denke, es ist Zeit für eine neue Generation Werkzeug zu bewegen. Was ich suche ist eine Liste von Anforderungen, die ich berücksichtigen sollten, wenn für einen neuen obfuscator suchen.

Was ich weiß, dass ich für so weit aussehen sollte:

  • Serialisierung / Deserialisierung . In meiner aktuellen Lösung, sage ich einfach das Werkzeug nicht alle Klassendatenelemente zu verschleiernweil der Schmerz nichtder LageDaten zu ladendie zuvor serialisiert wurde einfach zu groß ist.
  • Integration mit Build-Prozess
  • Arbeiten mit ASP.NET . In der Vergangenheit habe ich diese Problematik gefunden aufgrund sich ändernder DLLNamen (Sie haben oft eine pro Seite) - die nicht alle Werkzeuge gut behandeln.
Veröffentlicht am 05/08/2008 um 17:20
quelle vom benutzer
In anderen Sprachen...                            


31 antworten

stimmen
49

Wir haben eine Reihe von obfuscators versucht. Keiner von ihnen auf einer großen Client / Server-Anwendung arbeiten, die Remote verwendet. Das Problem ist, dass Client und Server teilen einige DLLs, und wir haben keinen obfuscator gefunden, die es verarbeiten können.

Wir haben versucht, Dotfuscator Pro, Smartassembly, Xenocode, Salamander, und mehrere kleine Zeit-Apps, deren Namen mir entkommen.

Ehrlich gesagt, ich bin überzeugt, dass die Verschleierung ein großer Hack ist.

Auch die Probleme, die sie anspricht, ist nicht ganz ein echtes Problem. Das einzige, was Sie wirklich schützen müssen, ist Verbindungszeichenfolgen, die Aktivierungscodes, sicherheitssensible solche Dinge. Dieser Unsinn, dass ein anderes Unternehmen wird ein Reverse-Engineering Ihre gesamte Code-Basis und schafft ein Konkurrenzprodukt von ihm etwas von einem paranoiden Manager Alptraum ist, nicht die Realität.

Beantwortet am 07/08/2008 um 19:15
quelle vom benutzer

stimmen
39

Ich bin ‚Knee Deep‘ in dieser jetzt versucht, eine gute Lösung zu finden. Hier sind so weit meine Eindrücke.

Xenocode - Ich habe eine alte Lizenz für Xenocode2005 , die ich für das Verschleiern meiner .net 2.0 Baugruppen zu verwenden , verwendet. Es funktionierte auf XP gut und hatte eine anständige Lösung. Mein aktuelles Projekt .net 3.5 und ich bin auf Vista, sagte Unterstützung mir, um ihn einen gehen , aber die 2005 - Version auch auf Vista (Abstürze) nicht funktioniert , damit ich und jetzt habe ich ‚PostBuild2008‘ zu einem Gobsmacking Preisklasse kaufen von $ 1900. Dies könnte ein gutes Werkzeug sein , aber ich werde mich nicht herausfinden. Zu teuer.

Reactor.Net - Dies ist ein sehr attraktiver Preis und es funktionierte auf meinem Standalone Executeable in Ordnung. Das Lizenzierungsmodul war auch schön und hätte mir einen Haufen Aufwand gespeichert. Leider ist es ein wesentliches Merkmal fehlt , und das ist die Fähigkeit , Dinge aus dem Verschleierungs auszuschließen. Dies macht es unmöglich , das Ergebnis zu erzielen I (Zusammenführen mehrerer Baugruppen zusammen, verschleiern einige, nicht-Obfuscate andere) benötigt.

Smartassembly - habe ich heruntergeladen Eval für dieses und es funktionierte einwandfrei. Ich war in der Lage , alles zu erreichen , ich wollte , und die Schnittstelle war erstklassig. Preis Punkt ist immer noch ein bisschen kräftig.

Dotfuscator Pro - kann nicht Preis auf der Webseite finden. Derzeit in der Diskussion ein Angebot zu erhalten. Klingt bedrohlich.

Confuser - ein Open - Source - Projekt , das funktioniert ganz gut (zu ppl zu verwechseln, wie der Name schon sagt). https://confuser.codeplex.com/
(ergänzt durch jgauffin)

Hinweis: ConfuserEx ist angeblich „gebrochen“ nach # 498 Ausgabe auf ihrer GitHub Repo.

Beantwortet am 11/05/2009 um 07:04
quelle vom benutzer

stimmen
39

Zurück mit .Net 1.1 Verschleierung war wichtig: decompiling Code war einfach, und Sie von der Montage, IL, zu C # -Code zu gehen und haben es wieder mit sehr wenig Aufwand zusammengestellt.

Jetzt mit .Net 3.5 Ich bin nicht sicher. Versuchen Sie, eine decompiling 3.5 Montage; was man bekommt, ist ein langer, langer Weg von zu kompilieren.

Fügen Sie die Optimierungen von 3,5 (weit besser als 1,1) und die Art und Weise anonyme Typen, Delegierten und so weiter durch Reflexion behandelt werden (sie sind ein Alptraum neu kompilieren). In Lambda - Ausdrücke, Compiler ‚Magie‘ wie Linq-Syntax und varund C # 2 - Funktionen wie yield(die mit nicht lesbaren Namen in neuen Klassen führen). Ihr dekompilierten Code endet einen langen langen Weg von übersetzbar auf.

Ein professionelles Team mit vielen Zeit könnte es immer noch wieder umkehren Ingenieur zurück, dann aber das gleiche gilt für jeden verschleierten Code. Welcher Code sie bekamen davon aus wartbaren würde und sehr wahrscheinlich sehr buggy sein.

Ich würde empfehlen, Schlüssel Unterzeichnung Ihrer Baugruppen (was bedeutet, wenn Hacker neu kompilieren können sie alle neu kompilieren), aber ich glaube nicht, Verschleierung lohnt sich.

Beantwortet am 12/08/2008 um 13:19
quelle vom benutzer

stimmen
21

Wenn Ihre Suche nach einem freien einem Blick könnte man DotObfuscator Community Edition versuchen , die mit Visual Studio oder kommt Eazfuscator.NET .


Seit 29. Juni 2012 ist Eazfuscator.NET jetzt kommerziell. Die letzte freie verfügbare Version ist 3.3.

Beantwortet am 05/08/2008 um 17:30
quelle vom benutzer

stimmen
18

Ich habe Smartassembly im Einsatz. Grundsätzlich holen Sie eine DLL und es gibt sie verschleiert. Es scheint gut zu funktionieren und ich habe bisher keine Probleme gehabt. Sehr, sehr einfach zu bedienen.

Beantwortet am 05/08/2008 um 17:21
quelle vom benutzer

stimmen
10

Ich habe fast jeden obfuscator auf dem Markt bewährten Smartassembly ist die beste in meiner Meinung nach.

Beantwortet am 07/08/2008 um 11:44
quelle vom benutzer

stimmen
8

Ich habe auch mit Smartassembly. Ich fand , dass Ezrinz Net Reactor viel besser für mich auf .net - Anwendungen. Es verschleiert, unterstützen Mono, verschmilzt Baugruppen und es hat auch eine sehr schöne Lizenzierungsmodul - Testversion oder verknüpfen Sie die Lizenz auf eine bestimmte Maschine (sehr einfach zu implementieren) zu erstellen. Der Preis ist auch sehr wettbewerbsfähig und wenn ich Unterstützung brauchte sie , wo schnell. Eziriz

Nur um klar zu sein, ich bin nur einen custumer, das das Produkt und nicht in irgendeiner Weise mit dem Unternehmen im Zusammenhang mag.

Beantwortet am 22/08/2008 um 18:41
quelle vom benutzer

stimmen
7

Die kurze Antwort ist, dass Sie nicht können.

Es gibt verschiedene Tools rund um das wird es schwieriger für jemanden, den Code zu lesen - von denen einige durch andere Antworten darauf hingewiesen wurden.

Doch all diese tut, ist es schwieriger zu lesen - sie erhöhen die Menge an Aufwand, das ist alles. Oft ist dies genug, um lässig Leser abzuschrecken, sondern jemand, der bestimmt wird, in den Code zu graben, immer in der Lage sein, dies zu tun.

Beantwortet am 16/07/2009 um 22:45
quelle vom benutzer

stimmen
6

Wir haben einen Multi-Tier-App mit einer asp.net und winform Schnittstelle, die auch Remote unterstützt. Ich habe keine Probleme hat mit jedem obfuscator mit Ausnahme des Verschlüsselungstypen, der zu einem Lader erzeugt, die in allen Arten von unerwarteten Weise problematisch sein können und es einfach nicht wert meiner Meinung nach. Eigentlich wäre mein Rat mehr entlang der Linien von „Vermeiden loader Typ obfuscators Verschlüsselung wie die Pest“. :)

Nach meiner Erfahrung wird jeder obfuscator mit jedem Aspekt von .net einschließlich asp.net und Remoting funktionieren, man muss nur mit den Einstellungen vertraut werden und lernen, wie weit man es in welchen Bereichen des Codes drücken kann. Und die Zeit nehmen, Reverse Engineering, um zu versuchen, was Sie bekommen und sehen, wie es mit den verschiedenen Einstellungen funktioniert.

Wir nutzten mehrere im Laufe der Jahre in unserer kommerziellen Anwendungen und ließ sich auf Gewürze obfuscator von 9rays.net weil der Preis stimmt, es macht den Job, und sie haben eine gute Unterstützung, obwohl wir wirklich nicht die Unterstützung in den Jahren gebraucht haben mehr, aber um ehrlich zu sein ich denke, es ist nicht wirklich wichtig, die Sie Obfuskator verwenden, um die Probleme und Lernkurve sind alle gleich, wenn Sie es wollen, mit Remote und asp.net richtig arbeiten lassen.

Wie andere erwähnt haben alle sind Sie wirklich tun, ist das Äquivalent eines Vorhängeschloss, halten sonst ehrliche Menschen und oder was es schwieriger macht, einfach eine App neu kompilieren.

Die Lizenzierung ist in der Regel der Schlüsselbereich für die meisten Menschen, und Sie sollten auf jeden Fall eine Art von digital signierten Zertifikat System verwenden für ohnehin Lizenzierung. Ihr größter Verlust von Casual Austausch von Lizenzen kommen, wenn Sie nicht über ein intelligentes System verfügen, die Menschen, die das Lizenzierungssystem brechen würden nie an erster Stelle zu kaufen.

Es ist wirklich einfach, dies zu weit zu fassen und einen negativen Einfluss auf Ihre Kunden und Ihr Unternehmen haben, das tun, was einfach ist und vernünftig und dann mach dir keine Sorgen darüber.

Beantwortet am 16/11/2008 um 20:57
quelle vom benutzer

stimmen
5

Crypto Obfuscator Adresse alle Ihre Anliegen und Szenarien. It:

  1. Automatisch schließt Typen / Mitglieder aus Verschleierungs basierend auf Regeln. Serialisierten types / Felder sind einer von ihnen.
  2. Es kann in den Build-Prozess integriert werden, mit msbuild.
  3. Unterstützt ASP.Net Projekte.
Beantwortet am 09/10/2009 um 10:42
quelle vom benutzer

stimmen
5

Für die letzten zwei Tage mit Dotfuscator Community Edition vorgeschoben (kostenlosen Download nach dem Grunde CE Registrierung, die mit Visual Studio mitgeliefert wird) experimentiere ich habe.

Ich denke, der Grund, warum mehr Menschen verwenden keine Verschleierung als Standardoption ist, dass es ein ernsthafter Streit um das Risiko im Vergleich ist. Bei kleineren Testprojekten konnte ich den verschleierten Code ausgeführt wird mit viel Aufwand. ein einfaches Projekt über Clickonce Deployment war mühsam, aber erreichbar, nachdem manuell die Manifeste mit Magiern unterzeichnen. Das einzige Problem war, dass der Stack-Trace auf Fehler kam verschleiert zurück und die CE nicht über ein Deobfuscator oder Klärbecken verpackt.

Ich habe versucht, ein reales Projekt zu verschleiern, die VSTO in Excel, mit Virtual Earth-Integration basiert, viele webservice Anrufe und ein IOC-Container und viel von Reflexion. Es war unmöglich.

Wenn Verschleierung wirklich eine entscheidende Voraussetzung ist, sollten Sie Ihre Anwendung entwerfen mit diesem Gedanken von Anfang an, die Prüfung der baut verschleiert, wie Sie Fortschritte. Andernfalls, wenn es sich um ein ziemlich komplexes Projekt ist, Sie gehen mit einer schweren Menge Schmerz zu beenden.

Beantwortet am 04/02/2009 um 23:40
quelle vom benutzer

stimmen
3

Ich fand die Agile.Net bietet ziemlich guten Schutz für Ihre .NET - Assembly , weil es nicht nur Verschleierungs bieten , sondern auch die Verschlüsselung. Laden Sie eine kostenlose Trail.
http://secureteam.net/NET-Code-Protection.aspx http://secureteam.net/downloads.aspx

Beantwortet am 03/09/2013 um 16:26
quelle vom benutzer

stimmen
3

Vermeiden Sie Reactor. Es ist völlig nutzlos (und ja, ich für eine Lizenz bezahlt). Xenocode war die beste, die ich gestoßen und kaufte für zu einer Lizenz. Die Unterstützung war sehr gut, aber ich habe es nicht viel brauchen, da es nur gearbeitet. Getestet habe ich jeden obfuscator ich finden konnte, und meine Schlussfolgerung ist, dass Xenocode war bei weitem das robusteste und hat den besten Job (auch Möglichkeit Prozess .NET-exe zu einer nativen exe zu schreiben, die ich nirgendwo anders gesehen hat.).

Es gibt zwei Hauptunterschiede zwischen Reaktor und Xenocode. Die erste ist, dass Xenocode tatsächlich funktioniert. Die zweite ist, dass die Ausführungsgeschwindigkeit Ihrer Baugruppen ist nicht anders. Mit Reaktor war es etwa 6 Millionen mal langsamer. Ich habe auch den Eindruck, dass Reaktor ein Ein-Mann-Betrieb war.

Beantwortet am 04/05/2011 um 10:43
quelle vom benutzer

stimmen
3

Sie könnten "Dotfuscator Community Edition" verwenden - es kommt standardmäßig in Visual Studio 2008 Professional. Sie können darüber lesen:

http://msdn.microsoft.com/en-us/library/ms227240%28VS.80%29.aspx
http://www.preemptive.com/dotfuscator.html

Die „Professional“ Version des Produkts kostet Geld, ist aber besser.

Haben Sie wirklich brauchen verschleierten Code? Normalerweise gibt es nur sehr wenig falsch mit Ihrer Anwendung dekompilierten wird, es sei denn, es zu Sicherheitszwecken verwendet wird. Wenn Sie sich Sorgen über die Menschen das „Stehlen“ Code sind, nicht sein; die überwiegende Mehrheit der Menschen in Ihrem Code suchen, werden zu Lernzwecken sein. Wie auch immer, es gibt keine absolut wirksame Verschleierung Strategie für .NET - jemand mit genügend Geschick immer in der Lage sein, Ihre Anwendung zu dekompilieren / ändern.

Beantwortet am 16/07/2009 um 22:47
quelle vom benutzer

stimmen
3

Ich habe keine Probleme mit Smartassembly hat.

Beantwortet am 16/09/2008 um 12:12
quelle vom benutzer

stimmen
3

Ich habe vor kurzem versucht , die Ausgabe eines freien obfuscator in den anderen freien obfuscator kochend - nämlich Dotfuscator CE und das neue Babel obfuscator auf CodePlex. Mehr Details auf meinem Blog .

Wie für die Serialisierung, habe ich diesen Code in eine andere DLL verschoben und enthalten, dass im Projekt. Ich argumentierte, dass es dort keine Geheimnisse waren, die ohnehin nicht in der XML sind, so dass es nicht Verschleierungs brauchen. Wenn es ein ernsthafter Code in diesen Klassen, unter Verwendung von Teilklassen in der Hauptbaugruppe sollte es abdecken.

Beantwortet am 11/09/2008 um 12:53
quelle vom benutzer

stimmen
3

Sie sollten verwenden, was auch immer für Ihre Plattform billigste und am besten ist bekannt und nennen ihn einen Tag. Obfuscation von Hochsprachen ist ein schwieriges Problem, weil VM Opcode-Streams leidet nicht an den beiden größten Problemen nativen Opcode-Streams zu tun: Funktion / Methode Identifizierung und registriert Aliasing.

Was Sie wissen sollten über Bytecode Umkehren ist, dass es bereits gängige Praxis ist für die Sicherheit Tester gerade X86-Code und finden Schwachstellen in sie zu überprüfen. In roher X86, können Sie nicht einmal unbedingt gültige Funktionen finden, geschweige denn eine lokale Variable über einen Funktionsaufruf verfolgen. In fast keinem Fall nativen tun haben Code Umkehrer Zugriff auf Funktions- und Variablennamen --- es sei denn, sie Microsoft Code Sie bewerten, für die helfend MSFT, dass Informationen an die Öffentlichkeit zur Verfügung stellt.

„Dotfuscation“ arbeitet hauptsächlich durch Funktions- und Variablennamen kriechen. Es ist wahrscheinlich besser, dies zu tun, als Code mit Debug-Level-Informationen zu veröffentlichen, in dem der Reflektor buchstäblich Ihren Quellcode aufgibt. Aber alles, was Sie darüber hinaus tun, ist wahrscheinlich in abnehmenden Erträge zu erhalten.

Beantwortet am 10/09/2008 um 22:38
quelle vom benutzer

stimmen
2

Hier ist ein Dokument von Microsoft selbst. Hoffe , das hilft ..., es ist aus dem Jahr 2003, aber es könnte noch relevant sein.

Beantwortet am 16/07/2009 um 22:38
quelle vom benutzer

stimmen
2

Ich habe in der gleichen Anwendung, da Net Verschleierung von Code 1, und es ist ein großen Kopfschmerzen von einer Wartungs Perspektive gewesen. Wie Sie erwähnt haben, kann die Serialisierung Problem vermieden werden, aber es ist wirklich einfach, einen Fehler zu machen und verschleiern etwas, das man nicht verschleiert haben will. Es ist einfach, den Build zu brechen, oder die Verschleierung Muster zu ändern und nicht die alten Dateien öffnen können. Außerdem kann es schwierig sein, herauszufinden, was schief gelaufen ist und wo.

Unsere Wahl fiel auf Xenocode und war ich die Wahl heute wieder machen würde ich es vorziehen, nicht den Code zu verschleiern oder Dotfuscator verwenden.

Beantwortet am 21/08/2008 um 21:31
quelle vom benutzer

stimmen
1

Es gibt eine gute Open - Source - Version namens Obfuscar. Scheint gut zu funktionieren. Typen, Eigenschaften, Felder können Verfahren ausgeschlossen werden. Das Original ist hier: https://code.google.com/p/obfuscar/ , aber da es scheint nicht mehr aktualisiert werden, jemand gegabelt es hier: https://obfuscar.codeplex.com/

Beantwortet am 19/12/2013 um 05:24
quelle vom benutzer

stimmen
1

Ich hatte einen Verschleierung / Ressourcenschutz in meinem neuesten rpoject zu verwenden und fand Crypto Obfuscator als schön und einfaches Werkzeug zu verwenden. Die Serialisierung Problem ist nur eine Frage der Einstellungen in diesem Tool.

Beantwortet am 22/04/2011 um 12:18
quelle vom benutzer

stimmen
1

die kostenlose Möglichkeit Dotfuscator in Visual Studio, sonst youd müssen gehen und kaufen ein obfuscator wie Postbuild (zu verwenden , wäre http://www.xenocode.com/Landing/Obfuscation.aspx )

Beantwortet am 16/07/2009 um 22:38
quelle vom benutzer

stimmen
1

Es hängt alles von der Programmiersprache, die Sie verwenden. Lesen Sie den Artikel: Obfuscated Code

Beantwortet am 16/07/2009 um 22:31
quelle vom benutzer

stimmen
1

Wir verwenden Smartassembly auf unserem Windows-Client. Funktioniert gut.

Fügt auch einige zusätzliche Probleme. Drucken Sie Ihre Klassennamen in Protokolldateien / haben Ausnahmen de-verschleierten werden. Und natürlich kann keine Klasse von seinem Namen. So ist es eine gute Idee, einen Blick auf Ihren Kunden zu nehmen und sehen, welche Probleme Sie durch Verschleierung erhalten können.

Beantwortet am 04/04/2009 um 12:28
quelle vom benutzer

stimmen
0

Smartassembly groß ist, war ich in den meisten meiner Projekte

Beantwortet am 01/12/2010 um 05:49
quelle vom benutzer

stimmen
0

Ich benutze auch Smartassembly. Allerdings weiß ich nicht , wie es für eine Web - Anwendung arbeitet. Ich möchte jedoch darauf hinweisen , dass , wenn Ihre App Shareware - Typ Schutz verwendet, stellen Sie sicher , dass es nicht eine Lizenz mit einem boolean Rückkehr prüfe. es ist zu einfach , um Byte zu knacken. http://blogs.compdj.com/post/Binary-hack-a-NET-executable.aspx

Beantwortet am 04/04/2009 um 11:53
quelle vom benutzer

stimmen
0

Sie können sich auch an neuen Code - Schutz - Technologien wie aussehen wollen Metaforic und ViLabs und neue Software - Kopierschutz - Technologien wie ByteShield . Disclosure: Ich arbeite für ByteShield.

Beantwortet am 03/01/2009 um 19:56
quelle vom benutzer

stimmen
-1

Verschleierung ist kein echter Schutz.

Wenn Sie eine .NET - Exe - Datei haben , gibt es eine weit bessere Lösung.

Ich benutze Themida und kann sagen , dass es sehr gut funktioniert.

Der einzige Nachteil von Themida ist, dass es nicht .NET Dlls schützen kann. (Es schützt auch C ++ Code in Exe und DLLs)

Themida ist bei weitem billiger als die hier erwähnten obfuscators und ist die beste in Anti - Piraterie - Schutz auf dem Markt. Es schafft eine virtuelle Maschine wurden kritische Teile des Codes werden laufen und betreibt mehrere Threads , die durch einen Cracker gesetzt Manipulation oder Bruchstellen zu erkennen. Er wandelt die .NET Exe in etwas , das Reflektor nicht einmal mehr als .NET - Assembly erkennen.

Bitte lesen Sie die ausführliche Beschreibung auf der Webseite: http://www.oreans.com/themida_features.php

Beantwortet am 06/03/2014 um 04:03
quelle vom benutzer

stimmen
-1

Ich habe versucht, Eziriz Demo-Version .... Ich mochte es. Aber gebracht nie die Software.

Beantwortet am 04/09/2009 um 04:21
quelle vom benutzer

stimmen
-2

Versuchen Sie diesen Service nutzen http://morpher.com/

Ich benutzte es für ein Projekt.

Beantwortet am 27/12/2013 um 11:22
quelle vom benutzer

stimmen
-2

Ich habe ein Produkt namens Rummage versucht, und es macht einen guten Job Ihnen eine gewisse Kontrolle zu geben ... Obwohl es viele Dinge fehlen, die Eziriz bietet aber den Preis für Rummage zu gut ist ...

Beantwortet am 06/09/2013 um 18:27
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more