Man sollte erst einmal feststellen, was zu schützen ist. Sind das Daten oder ist es das Programm an sich oder Teile davon. Danach kann man sich die Gefahr eines Hackers und entsprechende Gegenmaßnahmen überlegen.
Warum ist einfach zu erklären:
Wenn es Daten sind, dann kann man dass noch über Hash Prüfung über einen Datenbankserver prüfen. Ein Hacker würde dann eher versuchen, sich einen Zugang zur Datenbank zu schaffen oder sonst irgendwie an die Datenbank zu kommen oder diese zu kopieren. Was man dann im Programm als Hackerschutz und ausgeknobelelte Passwortsicherheit einfallen lässt ist dann trivial, da die Daten bzw. Datenbank das Angriffsziel ist. Außnahme wäre dann nur, wenn man die Daten mit ausgeknügelter Verschlüsselung speichert, dann wäre aber hier keine Frage, da man sowieso diese Thema berücksichtigt hat.
Anders, wenn da Programm, oder Teile davon, das wichtige ist. Beispielsweise ein Algorithmus, der Messungenauigkeiten oder Bildrauschen durch mehrfachte Interpolation mit Außreiser Reduktion verringert. Dann wäre die Programmausführung Passwortgeschützt. Die vorherigen Beispiele über Assembler Sprung nach der Passwortprüfung wäre für einen Hacker dann
Standart. Da braucht man dann keine hochkomplizierte, super duper sichere Passwortabfrage. Ein Hacker umgeht den ganzen Kram per Sprunganweisung. Signatur des Programmes würde er löschen und nach "Anpassung" neu erstellen. Würde Windows wegen gültiger Signatur nicht mal Merken. Die Idee, den Programmhash per Resource einzubinden und zu prüfen bringt auch nix. Dass kann man auch per Sprung übergehen.
Was kann man dagegen machen: Genau drei "Hilfsansätze"
1. Den wichtigen Programmteil auf einen USB Dongle mit eigener Logik verlagern. D.h. Programmausführung und Kommunikation über eine HSM geschütze Hardware mit Ausleseschutz.
2. Programmdatei verschüsseln und nur in den Arbeitsspeicher mit dynamischer Speicherzuordnung entpacken. Dann reicht auch ein einfacher Hash Test für das Passwort. Ein richtiger Hacker, der den Programmcode haben will, friert den Rechner ein, ließt den Arbeitsspeicher aus und kann im Arbeitsspeicher ändern.
3. Wer so ein Programm auf einem PC mit Internetanschluss entwickelt braucht 1 und 2 nicht zu beachten. Ein Hacker versucht Zugriff auf den PC zu bekommen und holt sich direkt den Original Sourcecode. Ist weniger Arbeit für den Hacker und dürfte bei "Auftragsarbeit" auf kulerativer sein, da er direkt das komplette Entwicklungsprojekt hat.
Stellt sich daher erst einmal die Frage, was ist das wichtige. Programm oder Daten und könnte ein Hacker sich direkt den Sourcecode klauen, sofern diese so wichtig ist, dass die Ausführung Passwortgeschütz sein muss?