2009-02-10 2 views
8

Ich entwickle eine kleine Windows-Anwendung mit C++ und ich möchte eine Art Fingerabdruck der Software/Hardware auf einem PC, so dass ich kann zulassen, dass die App nur auf bestimmten PCs ausgeführt wird.Wie bekomme ich einzigartige Hardware/Software-Signatur von einem Windows-PC in C/C++

Ich bin mir bewusst, dass die App geknackt werden kann, aber ich bin wirklich daran interessiert, etwas wie das zu implementieren.
Irgendwelche Ideen, wie könnte ich das erreichen?

+0

Hinweis: Kopierschutz-Tag hinzugefügt – newgre

Antwort

10

Es hängt im Wesentlichen davon ab, wie eng Sie Ihre Software an die zugrunde liegende Hardware koppeln möchten. Zum Beispiel könnten Sie einige Hardware-Informationen aus der Registry holen, die MAC-Adresse von der LAN-Karte auslesen, den Hersteller der Grafikkarte, die CPU-ID usw. abrufen und all diese Daten hashen.
Sie könnten diesen Hash dann als challenge-Code verwenden, der an Ihr Unternehmen gesendet wird. Der Kunde erhält dann die signierte (mit Ihrem privaten Schlüssel) Version dieses Hash.
Nach dem Start kann Ihre Anwendung prüfen, ob die Signatur des Hashs gut oder schlecht ist (d. H. Von Ihrer Firma signiert wurde).
Dies bindet nicht nur Ihre Software an eine bestimmte Hardwarekonfiguration, sondern zwingt die Cracker auch, Ihre Anwendung zu patchen (weil sie den öffentlichen Schlüssel von Ihrer ausführbaren Datei patchen und ersetzen müssten, um ein keygen zu schreiben). Viele Leute ziehen es in Erwägung, einen aus verschiedenen Quellen erhaltenen Riss zweimal zu installieren, statt nur eine gültige Seriennummer einzugeben, die von einem keygen kopiert wurde.

Edit:
Um die Unterschrift des Hash, alles von RSA über DSA-ECC zu überprüfen, können verwendet werden. Ich kann Crypto++ oder libTomCrypt dafür empfehlen.

0

Es gibt keine zuverlässige Möglichkeit, dies in einem Vanilla-PC zu tun; Menschen haben seit Jahren versucht. Das Problem besteht darin, dass Sie jederzeit eine Komponente ändern können, einschließlich der CPU und der BIOS-ROMs. Die nächsten Leute, die gekommen sind, verwenden eine kryptografisch geschützte "dongle", aber das hat sich sowohl im Betrieb als unbefriedigend als auch als nicht sehr sicher erwiesen.

Wenn Sie sich etwas einfallen lassen, patentieren Sie es; es wäre sehr wertvoll.

0

Wie die anderen gesagt haben, gibt es nichts perfektes für das, was Sie wollen. Ich machte einen halbherzigen Versuch für ein ähnliches Problem und endete mit einer Mischung aus Drive Volume ID (nicht gut, weil es neu formatiert werden kann) und dem OS-Key (aus Windows).

Am Ende habe ich nicht viel Zeit damit verbracht, als ob die Leute wirklich wollen, dass deine Software geknackt wird, sie werden es wahrscheinlich können. Ich habe die dinky Lizenz "Schutz", aber es ist ziemlich arm.

Verbringen Sie die Zeit/Mühe, damit sie es kaufen wollen, indem Sie es hervorragend machen.