Einzelnen Beitrag anzeigen

Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#13

AW: SW Module mit Key schützen

  Alt 10. Dez 2017, 20:32
Zitat:
Darum verschllüsseln "bessere" Schutzfunktionen den eigentlichen Programmcode und entschlüsseln ihn dann zur Laufzeit.
Das wäre meiner Meinung nach eine Diskussion werde.
Ist auch nur bedingt hilfreich, wie himitsu schon angedeutet hat. Früher haben diese Protektoren einfach beim Start das komplette Binary on-the-fly im RAM decrypted und dann die Ausführung beim originalen EntryPoint fortgesetzt. Da kamen die Leute allerdings sehr schnell drauf, dass man dann einfach das (dann unverschlüsselte) Speicherabbild zur Laufzeit wieder in eine .exe dumpen konnte. Muss man gegebenenfalls noch ein paar Imports fixen, aber das ist alles kein Teufelswerk.

Modernene Schutzprogramme sind dann dazu übergegangen immer nur Teile des Programmcodes sozusagen dynamisch bei Ausführung zu entschlüsseln. Ist schonmal besser, kann aber automatisiert auch sehr einfach entpackt werden. Außerdem muss man sich vor Augen halten, dass der Crypto Key IMMER zwangsweise irgendwo im Programm enthalten sein muss. Hat man den gefunden, hat man gewonnen.

Lösungen wie Themida oder VMProtect setzen primär auf Obfuscation (= einzelne Instructions werden in Äquivalenten Code umgeschrieben und in Code versteckt, der "nichts macht") und Virtualisierung (= der Protektor erstellt eine virtuelle Maschine mit dynamisch erzeugten Instruction Set und übersetzt das Target bzw. Teile davon). Diese zwei Sachen kann man dann für den maximalen Schutz noch kombinieren und mit einigen Kleinigkeiten wie Import Redirection, Debugging Checks, etc. aufpimpen, um die Cracker noch ein wenig mehr zu ärgern So eine VM zu reversen und den Code dann auch noch zu reassemblieren macht extrem wenig Spaß

der zuschützende Programmcode sollte im Idealfall nur auf einem "externem" sicheren System ausgeführt werden... verschlüsselt speichern und unverschlüsselt im RAM ausführen bringt nix, wenn dann eine Tokenvirtualisierung wie bei Themida...

Wer das Hardwarekonzept nicht mag, der denke alternativ mal an eigene WebServices und RemoteProcedureCalls... dann ist der zu schützende Programmcode auch nur auf dem eigenem WebServer, nur die IO-Daten fliegen hin&her.
Besonders das Web-Konzept ist eigentlich die einzig wirklich sichere Lösung, aber je nach Performance- bzw. Sicherheitsanforderungen (wenn die Rechner z.b. bewusst keinen Internetzugang besitzen) nicht immer machbar. Die Wahrscheinlichkeit, dass sich jemand überhaupt die Mühe macht, einen Hardware Schutz zu umgehen, ist natürlich auch sehr gering. Ist für professionelle (Firmen-)Software sicherlich eine gute Lösung, für normale Heimanwender allerdings leider total ungeeignet.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat