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.
"P.S .: Bitte nicht Verschleierung vorschlagen. Ich habe das schon getan." lol. –