Es gilt der erste Grundsatz der IT-Sicherheit: Sobald der Benutzer volle lokale Kontrolle (root- / Admin-Zugriff) über den Rechner hat , auf dem die zu schützenden Dateien liegen, ist alles mit entsprechendem Aufwand crackbar.
Man kann das ganze durch Verschlüsselung nur erschweren.
Wenn es nur darum geht, den direkten Zugriff auf die Dateien zu verhindern, könntest du z.B. ein virtuelles Dateisystem für die Dateien einbauen.
Heisst, du lieferst die Dateien in einem selbstgeschriebenen Paketformat aus, aus dem die Anwendung liest.
(muss ja nicht die imgres.dll sein, sondern ein eigenes, propietäres Format, wie es z.B. fast alle Spiele-Hersteller machen)
Aktivierungsmöglichkeiten gibt es viele...Seriennummern-Eingabe, Online-Challenge-Response-Authentication usw....nur eine Frage, wie sehr man den Aufwand auf die Spitze treiben will
Das aufwändigste diesbezüglich, was ich mal gemacht habe, was eine Online-Aktivierung, bei der die Seriennummer der Festplatte, auf dem das Programm installiert wurde, durch eine eigene Hash-Routine geschickt wurde, das wiederum an einen Server übergeben wurde, der daraus den Aktivierungs-Key errechnet und zurücksendet.
Damit hält man schon mal viele normale Benutzer von der einfachen Weitergabe / Kopieren des Programms ab, echte "Cracker" wird man aber nie aufhalten