523 Stimmen

Schutz von .NET-Code vor Reverse Engineering?

Die Verschleierung ist eine Möglichkeit, aber sie kann nicht davor schützen, die Sicherheit der Anwendung gegen Piraterie zu verletzen. Wie stelle ich sicher, dass die Anwendung nicht manipuliert wird, und wie stelle ich sicher, dass der Registrierungsmechanismus nicht zurückentwickelt werden kann?

Es ist auch möglich, eine C#-Anwendung in nativen Code zu konvertieren, und Xenocode zu kostspielig ist.

C# bietet viele Funktionen und ist die ideale Sprache für meinen Code, so dass es nicht in Frage kommt, die gesamte Codebasis erneut in C++ zu schreiben.

Sichere Zertifikate können leicht aus den signierten Assemblies in .NET entfernt werden.

7voto

Desolator Punkte 21470

Nun, Sie können Ihr Produkt nicht VOLLSTÄNDIG davor schützen, geknackt zu werden, aber Sie können die Sicherheitsstufen maximieren/verbessern und es Neulingen und fortgeschrittenen Crackern etwas zu schwer machen, geknackt zu werden.

Aber bedenken Sie, dass nichts unknackbar ist, nur die Software auf der Serverseite ist gut geschützt und kann nicht geknackt werden. Wie auch immer, um die Sicherheit Ihrer Anwendung zu erhöhen, können Sie einige einfache Schritte unternehmen, um zu verhindern, dass einige Cracker (nicht alle) Ihre Anwendungen knacken können. Diese Schritte werden die Cracker in den Wahnsinn treiben und vielleicht verzweifeln lassen:

  • Verschlüsseln Sie Ihren Quellcode. Dadurch wird Ihr Quellcode natürlich unübersichtlich und unlesbar.
  • Lösen Sie mehrere zufällige Prüfroutinen innerhalb Ihrer Anwendung aus, z. B. alle zwei Stunden, 24 Stunden, einen Tag, eine Woche usw. oder vielleicht nach jeder Aktion des Benutzers.
  • Speichern Sie die freigegebene Anwendung MD5 Prüfsumme auf Ihrem Server und implementieren Sie eine Routine, die die aktuelle MD5-Prüfsumme der Datei mit der realen Prüfsumme auf Ihrer Serverseite abgleicht und diese zufällig auslöst. Wenn die MD5-Prüfsumme geändert wurde, bedeutet dies, dass es sich um eine Raubkopie handelt. Jetzt können Sie sie einfach blockieren oder ein Update veröffentlichen, um sie zu blockieren, usw.
  • Versuchen Sie, eine Routine zu erstellen, mit der Sie überprüfen können, ob einige Ihrer Codes (Funktionen, Klassen oder bestimmte Routinen) tatsächlich verändert oder entfernt wurden. Ich nenne es (Code-Integritätsprüfung).
  • Verwenden Sie kostenlose unbekannte Packer, um Ihre Anwendung zu packen. Wenn Sie das Geld haben, können Sie auch kommerzielle Lösungen nutzen, wie z. B. Thamida o .NET Reactor . Diese Anwendungen werden regelmäßig aktualisiert, und sobald ein Cracker Ihre Anwendung entpackt, können Sie einfach ein neues Update von diesen Unternehmen erhalten, und sobald Sie das neue Update erhalten, packen Sie einfach Ihr Programm und veröffentlichen ein neues Update.
  • Geben Sie regelmäßig Updates heraus und zwingen Sie Ihre Kunden, das neueste Update herunterzuladen.
  • Machen Sie Ihre Bewerbung schließlich sehr billig. Machen Sie sie nicht zu teuer. Glauben Sie mir, Sie werden mehr zufriedene Kunden bekommen und Cracker werden Ihre Anwendung einfach verlassen, weil es ihre Zeit nicht wert ist, eine sehr billige Anwendung zu knacken.

Dies sind nur einfache Methoden, um zu verhindern, dass Neulinge und fortgeschrittene Cracker Ihre Anwendung knacken. Wenn Sie weitere Ideen zum Schutz Ihrer Anwendung haben, scheuen Sie sich nicht, diese umzusetzen. Es wird den Crackern das Leben schwer machen, und sie werden frustriert sein, und schließlich werden sie Ihre Anwendung verlassen, weil sie ihre Zeit einfach nicht wert ist.

Schließlich müssen Sie auch bedenken, dass Sie Ihre Zeit in die Programmierung einer guten und hochwertigen Anwendung investieren müssen. Verschwenden Sie Ihre Zeit nicht mit dem Programmieren komplizierter Sicherheitsschichten. Wenn ein guter Cracker Ihre Anwendung knacken will, wird er/sie das tun, egal was Sie tun...

Jetzt geh und baue ein paar Spielzeuge für die Cracker ein...

5voto

Shoban Punkte 22785

Wenn Microsoft eine Lösung findet, wird es keine raubkopierten Windows-Versionen mehr geben, so dass nichts sehr sicher ist. Hier sind einige ähnliche Fragen von Stack Overflow und Sie können Ihre eigene Art des Schutzes implementieren. Wenn Sie verschiedene Versionen herausgeben, können Sie verschiedene Techniken für die verschiedenen Versionen anwenden, so dass, wenn die erste Version geknackt ist, die zweite Version die Kontrolle übernehmen kann.

5voto

Matthew Olenik Punkte 3547

Es gibt Salamander Dies ist ein nativer .NET-Compiler und Linker von Remotesoft, der Anwendungen ohne das .NET-Framework bereitstellen kann. Ich weiß nicht, wie gut er seinen Ansprüchen gerecht wird.

5voto

loraderon Punkte 4568

.NET Reactor

Update

Jared wies darauf hin, dass de4dot behauptet, es dekompilieren zu können.

.NET Reactor bietet vollständigen Schutz für Ihr sensibles geistiges Eigentum, indem es Ihre .NET-Assemblies in nicht verwaltete Prozesse konvertiert, die nicht als CIL verstanden werden können und die kein vorhandenes Tool dekompilieren kann. Hacker haben keinen Zugang zu irgendeiner verständlichen Form Ihres Quellcodes.

Die leistungsstarken und flexiblen Lizenzierungsfunktionen von .NET Reactor ermöglichen es Ihnen, Ihre Lizenzbedingungen durchzusetzen und Ihre Einnahmen zu schützen, indem Sie Hardware- und Softwaresperren verwenden. Der Lizenzmanager kann in Sekundenschnelle Test- oder Dauerlizenzen erstellen. Ein vollständig dokumentiertes Software Development Kit (SDK) mit Beispielen ermöglicht es Ihnen, das Lizenzierungssystem direkt von Ihrem Code aus aufzurufen und eigene Erweiterungen des Lizenzierungssystems zu erstellen.

4voto

rmeador Punkte 25087

Hier ist eine Idee: Sie könnten einen von Ihrem Unternehmen gehosteten Server einrichten, mit dem sich alle Instanzen Ihrer Software verbinden müssen. Es reicht nicht aus, sie einfach eine Verbindung herstellen und einen Registrierungsschlüssel überprüfen zu lassen - sie werden die Prüfung einfach entfernen. Zusätzlich zur Überprüfung des Schlüssels muss der Server auch eine wichtige Aufgabe erfüllen, die der Client nicht selbst ausführen kann, so dass sie nicht entfernt werden kann. Das würde natürlich eine Menge Arbeit auf dem Server bedeuten, aber es würde den Diebstahl Ihrer Software erschweren, und wenn Sie ein gutes Schlüsselschema haben (Überprüfung der Besitzverhältnisse usw.), werden auch die Schlüssel schwer zu stehlen sein. Dies ist wahrscheinlich invasiver, als Sie es wünschen, da Ihre Benutzer mit dem Internet verbunden sein müssen, um Ihre Software nutzen zu können.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X