2009-08-25 9 views
9

Ich habe eine Software entwickelt (mit C und Python), die ich mit Dongle schützen möchte, damit Kopieren und Reverse Engineering hart genug wird. Mein Dongle Gerät kommt mit einem api, die diese bietet:Welcher Code für ein Dongle-System sollte für eine bessere Sicherheit geschrieben werden?

  • prüfen Dongle Existenz
  • prüfen richtigen Dongle
  • Schreiben in eine Speicherstelle in Dongle
  • Lesen aus einem Speicherplatz in Dongle usw. (I denke, die Reste sind nicht so gut ..)

Was kann ich im Quellcode tun, so dass es schwieriger wird zu knacken. Dongle-Provider schlug vor, dass ich die ordnungsgemäße Dongle Existenz in einer Schleife oder nach einem Ereignis überprüfen sollte, oder ich sollte den Dongle-Speicher in einem effizienten Weg verwenden. Aber wie? Ich habe keine Ahnung, wie Cracker knacken. Bitte werfen Sie etwas Licht. Danke im Voraus.

S.S. Bitte nicht Verschleierung vorschlagen. Das habe ich schon gemacht.

+0

"P.S .: Bitte nicht Verschleierung vorschlagen. Ich habe das schon getan." lol. –

Antwort

10

Zunächst einmal erkennen, dass der Dongle nur ein kleines Hindernis darstellt. Jemand, der weiß, was er tut, wird einfach den Anruf zum Dongle entfernen und ein 'wahr' für jedes Ergebnis eingeben, das aufgerufen wurde. Jeder wird dir das sagen. Aber es gibt Straßensperren, die du hinzufügen kannst!

Ich würde einen wichtigen Teil Ihres Codes finden, etwas, das schwierig oder schwer zu wissen ist, etwas, das Domänenwissen erfordert. Dann lege dieses Wissen auf den Schlüssel. Ein Beispiel dafür wären Shader-Routinen. Shader-Routinen sind Textdateien, die an eine Grafikkarte gesendet werden, um bestimmte Effekte zu erzielen. Ein sehr einfacher Helligkeits-/Kontrastfilter würde weniger als 500 Zeichen zur Implementierung benötigen, und Sie können diesen im Benutzerbereich auf den meisten Dongles speichern. Dann legen Sie diese Information auf den Schlüssel und verwenden nur Informationen von dem Schlüssel, um Bilder anzuzeigen. Auf diese Weise werden alle Bilder in Ihrem Programm ausgeblendet, wenn jemand versucht, Ihren Dongle einfach zu entfernen. Es würde jemand brauchen, der entweder eine Kopie Ihres Programms hat, die Textdatei aus dem Schlüssel nimmt und dann Ihr Programm so modifiziert, dass es diese Textdatei enthält, und dann weiß, dass diese bestimmte Datei die "richtige" Methode zum Anzeigen von Bildern sein wird. Die Einzelheiten der Implementierung hängen von Ihrer Bereitstellungsplattform ab. Wenn Sie beispielsweise ein Programm in WPF ausführen, können Sie möglicherweise eine directx-Routine auf Ihrem Schlüssel speichern und diese Routine dann aus dem Schlüssel laden und den Effekt auf alle Bilder in Ihrer App anwenden. Der Cracker muss dann in der Lage sein, diese directx Routine abzufangen und richtig anzuwenden.

Eine andere Möglichkeit besteht darin, die Zufallszahlengenerierungsroutinen des Schlüssels zu verwenden, um UIDs zu entwickeln. Sobald jemand die Dongle-Funktionalität entfernt, werden alle generierten UIDs auf Null gesetzt.

Die beste Sache zu tun ist jedoch, eine domänenspezifische Funktion auf den Dongle zu setzen (wie die gesamte UID-Generierungsroutine). Unterschiedliche Hersteller werden in dieser Hinsicht unterschiedliche Fähigkeiten haben.

Wie viel von einem Roadblock werden diese Schlauheiten bekommen Sie? Realistisch hängt es von der Popularität Ihres Programms ab. Je beliebter Ihr Programm ist, desto wahrscheinlicher ist es, dass jemand es knacken will, und Sie werden sich dafür Zeit nehmen. In diesem Fall haben Sie möglicherweise ein paar Tage Zeit, wenn Sie besonders gut im Dongle-Coding sind. Wenn Ihr Programm nicht so populär ist (sagen wir nur ein paar hundert Kunden), dann könnte nur die Anwesenheit eines Dongles abschreckend genug sein, ohne etwas Cleveres tun zu müssen.

-1

Ich würde sagen, wenn jemand Ihren Softwareschutz knacken will, werden sie es tun. Wenn Sie "hart genug" sagen - wie sollte "genug" interpretiert werden?

Ein Dongle wird Ihren durchschnittlichen Benutzer vielleicht daran hindern, Ihre Software zu kopieren - in diesem Sinne ist es also schon "genug". Aber jeder, der das Bedürfnis hat und in der Lage ist, den Dongle zu umgehen, wird wahrscheinlich in der Lage sein, jedes andere Schema, das Sie entwickeln, zu überwinden.

5

Cracker knacken, indem sie den Verkehr zwischen Ihrer App und dem Dongle schnüffeln und entweder Code deaktivieren, der auf Dongle-Präsenz testet, oder Code schreiben, um den Dongle zu emulieren (z. B. durch wiederholten aufgezeichneten Verkehr), je nachdem, was einfacher aussieht.

Verschleierung des Testcodes und vieler verstreuter Codeabschnitte, die Tests auf verschiedene Arten durchführen, sowie räumliche und zeitliche Trennung des Testeffekts (Deaktivieren/Verschlechtern der Funktionalität, Anzeigen einer Warnung usw.) aus dem Test selbst machen die frühere Methode schwieriger.

Muting den Inhalt des Dongles mit jedem Test basierend auf einigen zufälligen Nonce erstellt jeden Lauf oder möglicherweise sogar zwischen den Läufen, so dass naiv Aufzeichnung und Wiedergabe der Verkehr nicht funktioniert, macht die letztere Methode schwieriger.

Mit dem System wie beschrieben, ist es jedoch immer noch einfach, den Dongle zu emulieren, so dass früher oder später jemand es tun wird.

Wenn Sie Code innerhalb des Dongles ausführen können, könnten Sie Code verschieben, der für Ihre Anwendung wichtige Funktionen ausführt, was bedeuten würde, dass die Cracker entweder den Code reederieren oder die physische Sicherheit des Dongles durchbrechen müssen - viel mehr teurer Vorschlag (obwohl immer noch durchführbar; erkennen, dass es keine perfekte Sicherheit gibt).

0

Sie können in Ihrer Anwendung viele Prüfpunkte implementieren.

Ich weiß nicht, ob Sie HASP verwenden, aber unglücklicherweise, dongles can be emulated.

3

Wie maximiere ich den Schutz mit einem einfachen Dongle?

Verwenden Sie die API zusammen mit Enveloper, wenn für das resultierende Dateiformat ein Enveloper existiert. Dies ist eine sehr grundlegende Regel. Weil unser Enveloper bereits mit einigen Anti-Debugging- und Verschleierungstechniken ausgestattet ist, um zu verhindern, dass gewöhnliche Neuling-Hacker aufhören, das Programm zu hacken. Nur die Verwendung von Enveloper ist ebenfalls nicht zu empfehlen, da ein Hacker den Kuvertiersicherheitsschutz in einem anderen Programm brechen kann, wenn Ihr Hacker diesen auch brechen kann.

Rufen Sie Dongle-APIs in einer Vielzahl von Orten in Ihrer Anwendung. Zum Beispiel beim ersten Start, beim Öffnen einer Datei, beim Öffnen eines Dialogfelds und vor der Verarbeitung von Informationen. Vielleicht auch eine zufällige Überprüfung, auch wenn nichts getan wird.

Verwenden Sie mehr als eine Funktion, um ein Programm zu schützen. Verwenden Sie die Suchfunktion nicht nur, um nach einem gesteckten Dongle zu suchen.

Verwenden Sie mehrere Dlls/Bibliotheken (falls zutreffend), um Dongle-Funktionen aufzurufen. Wenn eine DLL gehackt wird, dann gibt es noch andere Teile der Software, die die Funktionen von einer anderen DLL verwendet. Kopieren Sie z. B. sdx.dll in print.dll, open.dll und andere Namen, und definieren Sie dann die Funktionsaufrufe von jeder DLL mit unterschiedlichen Namen.

Wenn Sie eine DLL-Datei verwenden, um Dongle-Funktionen aufzurufen, binden Sie sie mit der ausführbaren Datei zusammen. Es gibt einige Programme, die dazu in der Lage sind; zum Beispiel PEBundle.3

Ich habe diesen Artikel auf PRLOG und fand es ziemlich nützlich, um den Schutz mit einem einfachen Dongle zu maximieren. Vielleicht kann über diesen Link

Maximizing Protection with a Simple Dongle for your Software

0

helfen Möglicherweise möchten Sie in die Verwendung Dinkey Dongles für Ihren Kopierschutz suchen.

Es scheint ein sehr sicheres System zu sein und die Dokumentation gibt Ihnen Tipps zur Verbesserung Ihrer allgemeinen Sicherheit mit dem System.

http://www.microcosm.co.uk/dongles.php

0

Ironischerweise das, was Sie entmutigen wollen, ist nicht Piraterie durch die Nutzer, sondern Diebstahl von einem Lieferanten. Das Internet ist so ein gesetzloser Ort geworden, dass Verkäufer Ihre Software nach Belieben stehlen und weiterverkaufen können. In einigen Fällen haben Sie Rechtsschutz, in anderen nicht.

Nichts ist, wie bereits erwähnt, narrensicher. Je komplexer Ihre Sicherheit ist, desto wahrscheinlicher ist es, dass sie legitimen Benutzern Kopfschmerzen oder Probleme bereitet.

Ich würde sagen, die sicherste Anwendung ist immer die am nächsten an den Server gebunden. Leider machen sich die Benutzer Sorgen darüber, dass es sich um Spyware handelt.

Wenn Sie viele verschiedene Anrufe an Ihren Dongle tätigen, wird der Cracker vielleicht nur Ihren Dongle emulieren - oder einen einzigen Fehlerpunkt finden (ganz normal, ein oder zwei Bytes zu ändern und alle Ihre Anrufe sind nutzlos) . Es ist eine Situation ohne Gewinn.

Als der Autor von PECompact, sage ich immer Kunden, dass sie sich nicht auf etwas verlassen können, um ihre Software zu schützen - wie es kann und wird geknackt werden, wenn ein dedizierter Cracker danach geht. Je schwieriger du es machst, desto mehr Herausforderung (Spaß) ist es für sie.

Ich persönlich benutze sehr minimale Schutztechniken auf meiner Software, diese Tatsachen kennend.

0

Verwenden Sie Smartcard + verschlüsseln/entschlüsseln Arbeitsdateien durch geheime Funktion in der Karte gespeichert. Dann kann Software raubkopiert werden, aber es wird nicht in der Lage sein, korrekt verschlüsselte Arbeitsdateien zu öffnen.