Frage

Ich war auf der Suche in die beste Verschlüsselung für einen Lizenzschlüssel für eine Anwendung, und jemand sagte, dass jemand einfach die Anwendung dekompilieren kann und dann einfach den Test für den Lizenzschlüssel überspringen.

Wie würde jemand gehen darüber praktisch tun sprechen? So haben sie meine .dll, sie haben es irgendwie zu dekompilieren, dann den Funktionsaufruf kommentieren Sie die Lizenz zu überprüfen, dann ist es neu kompilieren? Der Decompiler hat wirklich gut zu sein, so dass der Code noch kompiliert!

War es hilfreich?

Lösung

Versuchen Sie, Ihre Anwendung mit Reflector öffnen. Sie werden wahrscheinlich überrascht sein: -)

Und wenn ein Cracker den richtigen Ort im Code gefunden hat, kann sie eine Kombination von ildasm / ilasm den Scheck aus Ihrer Anwendung entfernen - auch wenn der Code Reflector nicht kompiliert erzeugt

.

Andere Tipps

Wenn der Quellcode normalerweise kompiliert wurde es sehr einfach .NET-Assemblies zu dekompilieren.

Sie können .NET Reflector , ursprünglich von Lutz Roeder entwickelt, die jetzt von Redgate Software unterstützt. Es gibt einen Screenshot im unteren Teil dieser Antwort, die Ihnen einen Eindruck vermittelt, was Reflector der Fall ist.

Sie können Ihre Namespaces und Klassen und sehen Sie den Quellcode und Methoden in Ihrer bevorzugten .NET-Sprache durchsuchen. Denis Bauer FileDisassembler können Sie (oder die bösen Hacker in Ihrem Fall) in eine VS-Lösung zu konvertieren und machen Änderungen an dem Programm.

Es gibt einige Gegenmaßnahmen wie mit einem Code obfuscator Code praktisch unlesbar machen.

Es gibt einige andere interessante Fragen auf Stackoverflow zu diesem Thema:

Bildschirmfoto von Reflektor:

Josh Smith veröffentlicht auch Crack.NET vor kurzem, die verwendet werden kann, um einen laufenden .NET zu befestigen Prozess, und dann, dass eröffnen in Reflector - also auch wenn die Baugruppen auf der Festplatte sind irgendwie verschlüsselt (zur Vermeidung von Menschen Reflector auf sie zu bekommen verwenden), werden sie noch in der Lage sein, die in-Memory-Versionen zu verwenden,

NET ist super einfach zu dekompilieren. Obfuscation wird es ein wenig schwieriger zu verstehen, was los ist, aber jemand dekompiliert den Code immer noch herausfinden können, wenn sie beständig sind.

Hier einige Ratschläge auf dem .NET-Code zu schützen, die ich online gefunden:

http://blogs.msdn.com/ericgu /archive/2004/02/24/79236.aspx

Es genügt zu bemerken, dass keine der diskutierten Techniken zu 100% wirksam ist, es ist nur eine Frage, wie viele Reifen Sie den Cracker Sprung durch machen.

.NET Kompilation im Allgemeinen ist recht einfach: ein Gefühl für diese Texte selbst zu bekommen, greift nur eine Kopie von . NET Reflector und probieren sie es aus.

In den meisten Fällen wird es keine Notwendigkeit, den Code, um neu zu kompilieren eine einfache Lizenzprüfung zu entfernen: einfach das Patchen die MSIL den Trick.

Sie sich vor diesem Szenario zu schützen Renditen Renditen schnell abnimmt: Es wird immer sein jemand klug genug, um zu umgehen, was zusätzliche Kontrollen Sie Ihren Code hinzufügen. Zum Beispiel könnten Sie eine digitale Signatur, um Ihren Code hinzufügen, und sich weigern, von der Unterzeichnung laufen nicht mit (den Code anzeigt, manipuliert wurde, zum Beispiel die Lizenzprüfung entfernen).

Das Spiel wird dann die Signaturprüfung (zusätzlich zu dem Lizenzschlüssel Prüfung) zu entfernen. So fügen Sie eine weitere Überprüfung, die dann umgangen werden kann, und so weiter, ad infinitum.

Es gibt eine ganze Industrie von Code obfuscatation und Kopierschutz Tools helfen Ihnen, Ihre Software gegen Fragen wie diese zu verteidigen. Es liegt an Ihnen, ob der zusätzliche Aufwand auf Ihrer Seite zu entscheiden, und der Ärger Sie Ihre berechtigten Kunden führen werden, lohnt sich in diesen Lösungen Kauf ...

Wenn dies etwas Sie suchen gegen verteidigen, möchten Sie vielleicht auf lesen, wie es zu attackieren.

Ausnutzen Software von Greg Holland & Gary McGraw ist eine hervorragende Einführung.

Am besten ist es, nicht über Bord auf Lizenzschlüssel Technologie zu gehen. Was auch immer Sie tun können, um einen bestimmten Benutzer gehackt werden und Sie führen das größere Risiko Themen hinzufügen, die berechtigten Benutzer mit Ihrer Anwendung zu beenden. Ich habe sogar Code gesehen, die mit HASP Dongles geschützt wurde geknackt zu bekommen. Verschlüsseln Sie Ihre Lizenzschlüssel und Ihren Code verschleiern sollten opportunistische Angriffe genug sein, zu verhindern, gibt es wenig Punkt wird darüber hinaus gehende.

Eric Sink einen guten Artikel über diesen Punkt siehe Abschnitt geschrieben "4 Stören Sie nicht Ehrliche Leute" von "Grundsätze der Transparenz"

Auch ohne Reflektor, haben die Menschen seit Jahrhunderten das getan. Grundsätzlich sehen Sie die App mit einem Debugger - so etwas wie WinDBG tun - und dann herausfinden, wenn die Lizenzprüfung passiert. Sie sehen den Rückgabewert, und dann einfach Sie die Anwendung Patch direkt auf den „alles gut“ Scheck zu springen.

Ich würde empfehlen, alles, was die Menschen über Beiträge geschrieben haben. Sie müssen nur erkennen, dass es eine Katze und Maus-Spiel, und wenn Ihre Rendite es sein wird, lohnt sich. Wenn Sie Benutzer haben, die nicht versucht werden, das System zum Spiel, dann einfach etwas tun kann. Wenn Sie etwas haben, wo Rissbildung ist weit verbreitet, dann werden Sie an verschiedenen Strategien aussehen müssen und gehen von dort aus.

Sie müssen nicht die Anwendung neu kompilieren zu flicken - viel binären Patch-Tools gibt, existieren. Und es wird nicht Ihren entschlossensten Cracker zu stoppen, wenn es genug Geld gemacht werden.

"Too"

Jede Art von „Standard“ / üblicher Lizenzprüfung Mechanismus ist ein Ziel für automatisiertes Tool zum Entfernen. Und in den wenigen kommerziellen NET-Anwendungen Ich habe reflektiert über diese „Zu trivial“ checks erscheint häufig.

Am besten ist, indem ein Teil des Programms abhängig von Web-Service zu schützen. Dies sollte nicht zu gesprächig Schnittstelle sein, um die Ausführung zu vermeiden verlangsamt, aber es sollte weder sehr klobig sein, da diese Stücke nur dann und lokal in der „gecrackte Version“ Im Cache heruntergeladen werden könnten, wenn die App hängt von ihnen häufig zu ändern.

Wenn Sie eine Netzwerkverbindung vermeiden möchten (einige Anwendungen oder Benutzer können feststellen, dass problematische / fragwürdig auf der App abhängig, es sei denn, es ist etwas, das Sie beschreiben, und liefert Wert), dann ein Teil des Programms in eine native dll Aufspalten oder zwei ist und die Lizenzüberprüfungen in allen Teilen der App und weniger offensichtlich so in der nativen dLL, würde wahrscheinlich genug sein, die meisten davon abzuhalten.

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