Frage

Ich dachte über eine kommerzielle NetcAnwendung verschleiern. Aber ist es wirklich die Mühe wert auswählen, kaufen und verwenden ein solches Werkzeug? Sind die verschleierten Binärdateien wirklich sicher vor Reverse-Engineering?

War es hilfreich?

Lösung

Visual Studio.NET kommt mit einer Community-Version von Dotfuscator -

Sie können nicht ein Werkzeug zu kaufen. Andere freie Verschleierungs Tools aufgeführt sind hier , und sie kann Ihren Anforderungen entsprechen.

Es ist möglich, dass die verschleierten Binärdateien von Reverse Engineering nicht sicher sind, wie es möglich ist, dass Ihr Fahrradschloss zerbrechlicher / aufsammelbare sein könnte. Allerdings ist es oft der Fall, dass eine kleine Unannehmlichkeit genug ist, zu verhindern wären Code / Fahrraddiebe.

Auch wenn immer es darum geht, Ihre Rechte auf ein Stück Code vor Gericht geltend zu machen, wurden gesehen, sich zu bemühen, sie zu schützen (durch Verschleiern) können Sie zusätzliche Punkte geben. : -)

Sie müssen die negativen Seiten betrachten, obwohl - es schwieriger sein kann Reflexion mit verschleierten Code zu verwenden, und wenn Sie so etwas wie log4net verwenden Teile von Log-Linien zu erzeugen, basierend auf dem Namen der Klasse beteiligt, diese Nachrichten können sehr viel schwieriger zu interpretieren sein.

Andere Tipps

Beachten Sie, dass die Verschleierung nur ein Hindernis für den gelegentlichen Prüfer des Codes ist. Wenn jemand ernst ist, herauszufinden, was Sie geschrieben haben, haben Sie eine sehr harte Zeit zu stoppen sie.

Wenn Sie Geheimnisse in Ihrem Code (wie Passwörter) haben, Sie tun es falsch.

Wenn Sie jemand besorgt könnte Ihre eigene Software mit Ihren Ideen produzieren, werden Sie mehr Glück auf dem Markt haben durch neue Versionen bieten, die Ihre Kunden wünschen, mit dem technischen Support, und durch einen Partner zu ihnen. Ein gutes Geschäft gewinnt.

Bei uns untersuchten wir verschiedene Verschleierungstechniken, aber sie alle Probleme hatten. Das größte Problem war, dass wir eine Menge auf Reflexion verlassen, zum Beispiel dynamisch Grids zu erstellen, basierend auf Eigenschaftsnamen.

So alle der obfuscators Dinge benennen, können Sie es natürlich nicht deaktivieren können, aber dann verlieren Sie viel Nutzen der Verschleierung.

Auch in unserem Code haben wir eine Menge von NUnit Tests, die mehrere der Verfahren auf viele verlassen und Eigenschaften der Öffentlichkeit zu sein, dies einige der obfuscators verhindert der Lage, diese Klassen zu verschleiern.

Am Ende haben wir auf einem Produkt angesiedelt genannt NET Reactor

Es funktioniert sehr gut, und wir haben keine der mit den anderen Produkten verbundenen Probleme.

"Im Gegensatz zu obfuscators .NET Reactor stoppt vollständig jedes decompiling durch den rein .NET Assembly Mischen (geschrieben in C #, VB.NET, Delphi.NET, J #, MSIL ...) mit nativen Maschinencode. Genauer gesagt, .NET Reactor baut eine native Wand zwischen potenziellen Hackern und .NET-Code. Das Ergebnis ist ein Standard Windows-basierte, nicht MSIL kompatibel, Datei. Die ursprüngliche .NET-Code bleibt intakt, auch von den nativen Code und unsichtbar für neugierigen Blicken geschützt. Der original .NET-Code ist nicht jederzeit auf der Festplatte kopiert werden. Es gibt kein Werkzeug, die .NET Reactor zu dekompilieren ist in der Lage Baugruppen geschützt. "

Die Tatsache, dass Sie tatsächlich Reverse Engineering nicht Verschleierungs nutzlos macht. Es macht deutlich die Messlatte höher.

Eine unverschleierte .NET Assembly zeigt Ihnen alle die Quelle, hervorgehoben und alles nur durch die .NET Reflector . In Verschleierung, dass und Sie reduzieren sehr signifikant zu der Menge von Menschen, die der Lage sein werden, den Code zu ändern.

Es hängt von Ihnen Sie von sich selbst zu schützen sind. Wenn Sie Schiff es unverschleierte, könnte man genauso gut Open-Source-Anwendung und Nutzen von Marketing. es Versand verschleiert werden die Menschen relativ nur auf einfache Weise modifizierte Binärdateien durch Patches zu erzeugen, anstatt Code stehlen zu können und einen direkten Konkurrenten erstellen. Gibt es die eigentliche Quelle von verschleierten Code ist sehr hart, je nach obfuscator, natürlich.

Ich denke, dass es von der Art des Produkts abhängt. Wenn es gerichtet wird von Entwicklern verwendet werden - Verschleierungs Ihren Kunden schaden. Wir haben die ArcGIS-Produkte bei der Arbeit unter Verwendung von und alle DLLs verschleiert werden. Es macht unsere Arbeit sehr viel schwieriger, da wir nicht Reflector seltsames Verhalten entschlüsseln können. Und wir kaufen Kunden, die Tausende von Dollar für das Produkt bezahlt.

Also bitte, verschleiert nicht, wenn Sie wirklich müssen.

Was Sie berücksichtigen sollten:

  • Obfuscation schützt nicht Ihren Code oder Logik. Es macht einfach schwieriger, es zu lesen und zu verstehen.
  • Obfuscation hat niemand von Reverse Engineering zu stoppen. Es verlangsamt nur den Prozess nach unten.
  • Ihr geistiges Eigentum durch das Gesetz in den meisten Ländern geschützt ist. Also, wenn ein Konkurrent Code oder spezifische Implementierung verwendet, Sie ihn verklagen können.

Die einzige Problem Verschleierung lösen kann, ist, dass jemand eine 1 erstellt: 1 (oder nahe 1: 1). Kopie Ihrer spezifischen Implementierung

Auch in einer idealen Welt Reverse Engineering einer verschleierten Anwendung ist wirtschaftlich unattraktiv.

Aber zurück zur Realität:

  • Es gibt auf diesem Planeten kein Werkzeug, das jede Anwendung bereitstellen oder erzeugen jemanden zu kopieren Benutzeroberflächen, Verhaltensweisen oder Ergebnisse stoppt. Die Verschleierung ist in diesen Situationen 100% nutzlos
  • Die beste obfuscator auf dem Markt nicht ein verwenden irgendeine Art von Disassembler oder Hex-Editor und für einige Geeks stoppen dies ist ziemlich gut in das Herz einer Anwendung zu suchen. Es ist nur härter als auf einem unverschleierte Code.

So ist die Realität ist, dass Sie es schwieriger und zeitaufwendiger machen können in Ihre Anwendung aussehen, aber Sie werden nicht wirklich zuverlässigen Schutz erhalten. Unabhängig davon, ob Sie eine kostenlose oder ein kommerzielles Produkt verwendet werden.

Fortschrittliche Technologien wie Kontrollfluss Verschleierung oder Code Virtualisierung helfen kann manchmal wirklich schwer zu verstehen Logik zu machen, aber sie können auch viele lustige und schwer zu debuggen oder lösen Probleme verursachen. So sind sie manchmal eher wie ein zusätzliches Problem als eine Lösung.

Aus meiner Sicht Verschleierung ist das Geld nicht wert, einige Unternehmen für ihre Produkte verlangen. Wenn Sie lässige Entwickler, Open-Source-obfuscators ist gut genug, um nörgeln wollen. Wenn Sie es so schwer wie möglich machen wollen, in das Herz Ihrer Anwendungen zu suchen, müssen Sie mit Umgebungen virtueller Ausführung kryptographische Behälter verwenden und virtuellen Dateisystemen, sondern sie auch Angriffsvektoren liefern und auch eine Quelle für einen Sack voller Probleme sein können .

Ihr geistiges Eigentum und Ihre Produkte sind in den meisten Ländern gesetzlich geschützt. Wenn es also ein Konkurrent Analyse ist und Ihr Code kopieren, können Sie ihn verklagen. Wenn ein schlechter Kerl oder und Hacker oder Cracker Ihre Anwendung nimmt werden Sie pranked -. Aber ein obfuscator macht keinen Unterschied machen

So können Sie zunächst über Ihre Ziele denken sollte, Ihren Markt und was Sie wollen mit einem obfuscator erreichen. Wie Sie hier lesen (und an anderen Orten) Verschleierungs lösen nicht wirklich das Problem des Reverse Engineering. Es macht es nur schwieriger und zeitaufwendig. Aber wenn das, was Sie wollen, können Sie einen Blick auf Quelle obfuscators wie zum Beispiel zu öffnen Liste: sharpObfuscator oder obfuscar, die gut genug sein kann lässig Coder Gaul (eine Liste finden Sie hier. NET Obfuscators auf Wikipedia ).

Wenn es in Ihrem Szenario möglich ist, könnten Sie auch in SaaS-Konzepten interessiert sein. Das bedeutet, dass Sie den Zugriff auf Ihre Software zur Verfügung stellen, aber nicht die Software selbst. So hat der Kunde normalerweise keinen Zugriff auf Ihre Baugruppen. Aber je nach Service-Level, die Sicherheit und Benutzerbasis kann es sein, teuer, komplex und schwierig, einen zuverlässigen, selbstsicher und performant SaaS-Dienst zu realisieren.

Nein, wurde Verschleierungs bewiesen, dass es jemand nicht daran hindert, von der Möglichkeit, den kompilierten Code zu entschlüsseln. Es macht es schwieriger, so zu tun, aber nicht unmöglich.

Ich bin sehr komfortabel Lesung x86-Assembler-Code, was ist mit Menschen, die seit mehr als 20 Jahren mit Montage funktionieren?

Sie werden immer jemanden finden, der nur eine Minute brauchen, um zu sehen, was Ihre c # oder C-Code zu tun ...

Nur ein Hinweis auf jemand anderen später dieses Jahr zu lesen - ich abgeschöpft nur durch die Dotfuscator Community Edition (das mit VS2008 kommt) vor ein paar Stunden lizenzieren, und ich glaube, dass Sie diese Version nicht verwenden können, ein kommerzielles Produkt zu verteilen, oder zu verschleiern Code aus einem Projekt, das alle Entwickler andere als sich selbst beinhaltet. Also für kommerziellen App-Entwickler, es ist wirklich nur eine Testversion.

  

... schnipp ...   Diese Nachrichten können viel mehr geworden   schwer zu interpretieren

Ja, aber die freie Community Edition, die mit Visual Studio kommt, hat eine Karte Funktionalität. Damit können Sie die verschleierten Methodennamen zu den ursprünglichen Namen zurück verfolgen.

Ich habe Erfolg die Ausgabe von einem freien obfuscator setzen in einem anderen obfuscator . In Dotfuscator CE, nur sind einige der Verschleierung Tricks enthalten, so dass eine zweite obfuscator verwenden, die verschiedenen Tricks hat, macht es mehr verschleiert.

Es ist ganz einfach zu umkehren eine .net app Ingenieur mit .net Reflektor -., da die App generieren VB, VC und C # -Code direkt aus dem MSIL, und es ist möglich, alle Arten von nützlichen Edelsteinen ziehen

Code-obfuscators versteckt Code ganz gut von den meisten Reverse-Engineering-Hacks, und wäre eine gute Idee, auf proprietären und Wettbewerbs-Code zu verwenden, die den Wert Ihre App erstellt.

Es ist ein ziemlich guter Artikel über die Verschleierung und es ist Funktionsweise hier

Dieser Beitrag und die umgebende Frage haben einige Diskussionen, die von sein könnte Wert. Es ist nicht ein Ja oder kein Problem.

Ja, Sie sollten auf jeden Fall. Nicht, um es von einer bestimmten Person zu schützen, aber etwas Gewinn zu erhalten und Kunden. By the way, wenn Sie einen Punkt hier jemand erreichen versucht, die Software zu knacken, das bedeutet, dass Sie eine populäre Software zu verkaufen.

Das Problem ist, was Werkzeug für den Job zu wählen. Schauen Sie sich meine Erfahrung mit kommerziellen obfuscators: https: //stackoverflow.com/questions/337134/what-is-the-best-net-obfuscator-on-the-market/2356575#2356575

Ja, das tun wir. Wir verwenden BitHelmet obfuscator. Es ist neu, aber es funktioniert wirklich gut.

  

Aber ist es wirklich der Mühe wert, zu wählen, kaufen und ein solches Tool verwenden?

fand ich Eazfuscator billig (kostenlos) und einfach zu bedienen: dauerte etwa einen Tag. Ich hatte bereits umfangreiche automatisierte Tests (gute Abdeckung), so dass ich glaube, ich könnte alle Fehler finden, werden / wurden durch Verschleierung eingeführt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top