Frage

Eine andere Frage, D. H. Best .NET obfuscation tools/Strategie, fragt, ob die Verschleierung ist einfach zu implementieren, der Verwendung der Werkzeuge.

Meine Frage ist jedoch, ist Verschleierung effektiv? In einem Kommentar beantworten diese Antwort, jemand sagte, dass "wenn Sie besorgt sind über source Diebstahl ...Verschleierung ist fast trivial, um ein echter Pirat".

Ich habe die Ausgabe aus der Community-Version von Dotfuscator:und es sieht verschleiert zu mir!Ich möchte nicht behaupten, dass!

Ich verstehe das einfach das 'knacken' obfuscated-software kann relativ einfach sein:da brauchen Sie nur zu finden, welcher Ort in die software implementiert, was es ist Sie möchten zu knacken (in der Regel der Lizenz-Schutz), und fügen Sie einen Sprung zu überspringen.

Wenn die Sorge ist mehr als nur das knacken von einem Endbenutzer oder einem "Piraten" - obwohl:wenn die Sorge ist "Quelle Diebstahl", d.h.wenn Sie ein software-Anbieter, und Ihre Sorge ist einem anderen Anbieter (potenziellen Wettbewerber) reverse-engineering Ihrer Quelle, die Sie könnte dann in oder hinzufügen, um Ihre eigenen Produkt, ...inwieweit ist einfach Verschleierung einer ausreichenden oder unzureichenden Schutz gegen das Risiko?


1. Bearbeiten:

Der code in der Frage ist über 20 KLOC läuft auf Endbenutzer-Computern (ein Benutzer die Kontrolle, nicht ein remote-service).

Wenn der Verschleierung wirklich ist "fast trivial, um ein echter Pirat"Ich würde gerne ein paar Einblicke in warum es ist wirkungslos (und nicht nur "wie viel" es ist nicht wirksam).


2. edit:

Ich bin nicht besorgt darüber, wer die Umkehrung des Algorithmus:mehr besorgt über Ihre Umfunktionierung der tatsächlichen Umsetzung der Algorithmus (d.h.der source-code) in Ihrem eigenen Produkt.

Herauszufinden, dass 20 KLOC-ist mehrere Monate Arbeit zu entwickeln, würde es nehmen weniger oder mehr als dieser (mehrere Monate), um Entwirre es alle?

Ist es sogar notwendig sein, Entwirre etwas, um sich zu 'stehlen' es:oder möglicherweise einem sane Mitbewerber einfach zu integrieren Großhandel in Ihre Produkt, während noch verschleiert akzeptieren, wie Sie ist, es ist ein Wartungs-Albtraum, und hoffen, dass es braucht wenig Wartung?Wenn dieses Szenario ist eine Möglichkeit ist dann verschleiert .Net-code mehr verwundbar, als kompilierter Maschinen-code ist?

Die meisten der Verschleierung "Wettrüsten" richtet sich vor allem verhindern, dass Menschen Menschen aus noch 'knacken' etwas (z.B.suchen und löschen Sie den code-fragment, das die Lizenzierung, Schutz/Durchsetzung), mehr als bei der Verhinderung der 'Quelle Diebstahl?

War es hilfreich?

Lösung

Habe ich erörtert, warum ich glaube nicht, dass Verschleierung ist ein wirksames Mittel zum Schutz gegen Rissbildung hier:
Schützen .NET-Code vor reverse engineering

Jedoch, Ihre Frage ist speziell über Quelle Diebstahl,, das ist ein Interessantes Thema.Im Eldad Eiliams Buch "Umkehrung:Geheimnisse der Reverse Engineering"der Autor beschreibt Quelle Diebstahl als ein Grund für das reverse engineering in den ersten beiden Kapiteln.

Im Grunde, was kommt es ist die einzige chance, die Sie haben gezielt für die source-Diebstahl ist, wenn Sie haben einige sehr spezifische, schwer zu Ingenieur-Algorithmus in Bezug auf Ihre Domäne, die gibt Ihnen ein Bein auf Ihre Konkurrenz.Dies ist so ziemlich die einzige Zeit, die es werden Kosten-effektive, um zu versuchen, reverse Engineering einen kleinen Teil Ihrer Anwendung.

So, es sei denn, Sie haben einige top-secret-Algorithmus Sie nicht möchten, dass Ihre Konkurrenz zu haben, brauchen Sie nicht sorgen zu machen über source Diebstahl.Die Kosten, die mit Umkehrung einer signifikanten Menge von source-code aus Ihrer Anwendung schnell höher ist als die Kosten der re-schreiben Sie von Grund auf neu.

Selbst wenn Sie haben einige algorithmen, die Sie nicht wollen, Sie zu haben, gibt es nicht viel können Sie tun, um zu stoppen ermittelt und qualifizierte Personen immer es sowieso (wenn die Anwendung ausgeführt wird, auf dem eigenen Rechner).

Einige gemeinsame anti-Umkehr Maßnahmen sind:

  • Verschleierung nicht viel in Bezug auf den Schutz Ihrer Quell-oder verhindern, dass es geknackt.Aber wir könnten das auch nicht ganz einfach, Recht?
  • 3rd-Party-Packer - Themida ist einer von den besseren.Packs eine ausführbare Datei in eine verschlüsselte win32-Anwendung.Verhindert die Reflexion, wenn die Anwendung ein .Die NETTO-app als auch.
  • Benutzerdefinierte Packers - Manchmal schreiben Sie Ihre eigene packer, wenn Sie haben die Fähigkeit zu tun, ist effektiv, weil es sehr wenig Informationen in der cracking-Szene darüber, wie Sie packen Sie Ihre Anwendung.Diese können aufhören zu unerfahren RE.Diese tutorial gibt einige gute Informationen, die sich auf das schreiben Ihrer eigenen packer.
  • Halten Industrie geheime algorithmen aus der Benutzer-Maschine.Führen Sie einen remote-service, also die Anweisungen sind nie lokal ausgeführt.Die einzige "fool-proof" - Methode des Schutzes.

Jedoch, Packer entpackt, und Verbergung nicht wirklich behindern diejenigen, die wollen, um zu sehen, was Sie tut.Wenn das Programm ausgeführt wird, auf dem Nutzer-Rechner, dann ist er verwundbar.

Schließlich seinen code muss ausgeführt werden, da die Maschine code und es ist normalerweise eine Frage der Feuer-debugger, ein paar Haltepunkte und überwachung der ausgeführten Anweisungen werden während der jeweiligen Aktion und einige Zeit brütete über dieser Daten.


Sie haben erwähnt, dass es dauerte mehrere Monate, um zu schreiben ~20kLOC für Ihre Anwendung.Es würde fast eine Größenordnung mehr umkehren diejenigen, die äquivalent 20kLOC aus Ihrer Anwendung in brauchbare Quelle, wenn Sie nahm das absolute minimum Vorsichtsmaßnahmen.

Deshalb ist es nur kostengünstig reverse kleinen, Wirtschaft bestimmten algorithmen aus der Anwendung.Alles andere und das ist es nicht Wert.

Nehmen Sie die folgenden fiktiven Beispiel:Lets sagen, dass ich nur einen völlig neu entwickelten konkurrierende Anwendung für iTunes, hatte eine Tonne von Glocken und Trillerpfeifen.Lassen Sie sagen, es dauerte mehrere 100k LOC und 2 Jahre zu entwickeln.One-key-Funktion, die ich habe, ist eine neue Art, mit Musik, die Sie basierend auf Ihre Musik-hören im Geschmack.

Apple (die Piraten Sie sind) bekommt wind von diesem und entscheidet, Sie mag Ihre Musik-vorschlagen-Funktion, so dass Sie sich entscheiden, um es rückgängig zu machen.Sie werden dann Feilen-nur, dass der Algorithmus und reverse-Ingenieure schließlich kommen mit einem praktikablen Algorithmus, bietet das äquivalent Vorschläge, die die gleichen Daten.Dann implementieren Sie sagte Algorithmus in Ihrer eigenen Anwendung, nennen es "Genie" und machen sich auf den nächsten 10 Billionen US-Dollar.

Das ist, wie Quelle Diebstahl geht nach unten.

Niemand würde dort sitzen und reverse allen 100k LOC zu stehlen bedeutende Stücke Ihrer kompilierten Anwendung.Es wäre einfach zu kostspielig und zu zeitaufwendig ist.Über 90% der Zeit, Sie wäre die Umkehrung langweilig, nicht-Industrie-geheimnisvoll-code, der einfach behandelt Taste drückt oder verarbeitet Benutzereingaben.Stattdessen konnten Sie mieten den Entwicklern, Ihre eigenen zu re-schreiben die meisten es von Grund auf für weniger Geld zu haben und einfach in umgekehrter wichtige algorithmen, die sind schwierig zu konstruieren, und dass Ihnen eine Kante (dh, Musik suggest-Funktion).

Andere Tipps

Verschleierung ist eine form der security through obscurity, und zwar bietet es einen gewissen Schutz, die Sicherheit ist natürlich sehr begrenzt.

Für die Zwecke, die Sie beschreiben, obscurity können sicherlich helfen, und in vielen Fällen ist ein ausreichender Schutz gegen das Risiko von Diebstahl-code.Jedoch, es ist sicherlich immer noch die Gefahr, dass der code "unobfuscated" ausreichend Zeit und Mühe.Unobfuscating die gesamte Codebasis würde praktisch unmöglich, aber wenn eine Partei nur wünschen, um zu bestimmen, wie Sie einen bestimmten Teil Ihrer Umsetzung, die Risiken höher sind.

Am Ende können nur Sie bestimmen, ob das Risiko es Wert ist, für Sie oder Ihr Unternehmen.Jedoch, in vielen Fällen ist dies die einzige option, die Sie haben, wenn Sie wollen zu verkaufen Ihr Produkt, um Kunden in Ihrem jeweiligen Umfeld.

In Bezug auf die "warum das unwirksame" - der Grund ist, da ein cracker durchführen kann, verwenden Sie einen debugger, um zu sehen, wo Ihr code ausgeführt wird, unabhängig davon, was Verschleierung Technik verwendet wird.Diese können dann an die Arbeit, um alle Schutzmechanismen, die Sie haben setzen in Ort, wie eine Seriennummer oder "phone home" - system.

Ich glaube nicht, dass der Kommentar war wirklich verweisen auf "code-Diebstahl" in dem Sinne, dass Ihr code wird gestohlen und in einem anderen Projekt verwendet.Denn Sie verwendet das Wort "cracker" ich glaube, Sie unterhielten sich über den "Diebstahl" in Bezug auf software-Piraterie.Cracker spezialisiert auf arbeiten rund um Schutz Mechanismen;Sie sind nicht daran interessiert, mit Ihren source-code für andere Zwecke.

Die meisten Menschen neigen dazu zu schreiben, was zu sein scheint obfuscated code und das hat nicht aufgehört, der Cracker also, was ist der Unterschied?

EDIT:

Ok, ernste Zeit.Wenn Sie wirklich wollen etwas zu machen, was schwer zu brechen, schauen Sie in polymorphe Codierung (nicht zu verwechseln mit Polymorphismus).Machen code, die ist selbst-mutiert, und es ist ein schwerer Schmerz zu brechen, und halten Sie Sie raten.

http://en.wikipedia.org/wiki/Polymorphic_code

In das Ende, nichts ist unmöglich, reverse engineer.

Sie sind besorgt über die Menschen zu stehlen, die bestimmte algorithmen verwendet in Ihr Produkt.Entweder Sie sind Fair Isaac oder Sie brauchen, um sich zu differenzieren mit mehr als die Weg Sie x++;.Wenn Sie gelöst werden einige problem im code, dass kann nicht gelöst werden, indem jemand anderes Rätseln Sie es für ein paar Stunden, sollten Sie einen Doktortitel in informatik und/oder Patente zum Schutz Ihrer Erfindung.99% der software-Produkte sind nicht erfolgreiche oder speziell, weil die algorithmen.Sie sind erfolgreich, weil Ihre Autoren haben das schwere heben, um gemeinsam bekannte und leicht verständliche Konzepte in ein Produkt, was Ihre Kunden brauchen, und verkaufen es für billiger, als es Kosten würde, andere dafür zu bezahlen, um wieder das gleiche zu tun.

Betrachte es auf diese Weise;die WMD-editor, den Sie eingegeben haben, Ihre Frage in was reverse-engineered durch die SO-team, um zu beheben einige bugs und machen som Verbesserungen.Das war der code verschleiert.Sie werden nie aufhören, intelligente, motivierte Menschen von hacking dein hacking-Codes, das beste, was Sie hoffen können, ist, dass die ehrliche Menschen ehrlich und machen es etwas schwer zu brechen.

Wenn Sie jemals angesehen die Ausgabe von einem disassembler, würden Sie erkennen, warum der Verschleierung wird immer scheitern.

Ich Neige dazu zu denken, dass die Verschleierung ist wirklich nicht sehr wirksam, wenn Sie wollen zu schützen Ihre Quelle.Für den echten Experten im Bereich (ich meine nicht ein software-Experte hier oder cracker, ich meine, die Experten auf dem Gebiet, die Funktionalität des Codes), in der Regel er oder Sie braucht nicht zu sehen, der code, nur sehen, wie es funktioniert, reagieren gegen Besondere Eingänge, edge-cases, etc., um eine Idee zu bekommen, wie zu implementieren Sie eine Kopie oder ein code, das ist äquivalent zu geschützten Funktionen.Also nicht sehr hilfreich für den Schutz Ihres know-how.

Wenn du die IP im code muss unter allen Umständen geschützt werden, dann sollten Sie die Funktionen Ihrer software als service, auf eine gesicherte remote-server.

Gute Verschleierung schützt Sie bis zu einem gewissen Punkt, aber es ist alles über die Menge an Arbeit erforderlich, um Sie zu brechen, gegen die 'Belohnung' für den code zu haben.Wenn man darüber spricht, beenden Sie Ihre Durchschnittliche business-Anwender, dann ist eine kommerzielle obfuscator sollte ausreichend sein.

Die kurze Antwort ist: ja und Nein;es hängt ganz davon ab, was Sie versuchen, zu verhindern.Abschnitt von zwölf Sichere Programmierung Kochbuch hat einige interessante Kommentare dazu auf Seite 653 (das ist günstig nicht verfügbar in der google books-Vorschau).Es Stuft anti-Manipulation in vier Kategorien:Zero day (Verlangsamung der Angreifer so dauert es eine lange Zeit zu erreichen, was Sie wollen), der Schutz von einem proprietären Algorithmus, um zu verhindern, dass reverse engineering, "weil ich kann" - Angriffe, und ich kann mich nicht erinnern, das 4. man.Sie haben zu Fragen, was bin ich versucht zu verhindern, und wenn Sie sind wirklich besorgt über ein Individuum immer einen Blick auf Ihre source-code obfuscation hat einen bestimmten Wert.Verwendet auf seine eigenen, es ist normalerweise nur ein ärgernis sein, jemanden versuchen zu Chaos mit Ihre Anwendung und wie jede gute Sicherheit Messen, es funktioniert am besten, wenn verwendet in Kombination mit anderen anti-Manipulation-Techniken.

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