Hi!
Ich weiss schon wie ich es mache, ich nehme den Programmschlüssel
in die eigentliche Routine mit auf. Wollte ich zwar eigentlich trennen aber scheint der beste Weg zu sein.
Wie Sven Rautenberg bereits sagte: du scheinst keine Ahnung von Kryptografie zu haben...
Und die Idee einen Schlüssel in einer exe zu verstecken, klingt nicht sehr sinnvoll.
Die Idee, den Schlüssel irgendwo anders hinzupacken, aber auch nicht.
Wenn es sich immer um den gleichen Schlüssel handelt, wäre das nicht sehr klug.
Selbst wenn man an den Originalquelltext deiner exe mit Hilfe von Reverse Engineering nicht rankommt, braucht man eventuell trotzdem nicht mehr als einen Debugger und einen Hexeditor, um die Verschlüsselung auszuhebeln.
Bei einigen Sprachen wie PHP oder Perl ist der Code immer lesbar. Bei Sprachen wie Java wird nicht in Binärcode, sondern in Bytecode compiliert.
Die Decompilierung ist sehr einfach.
Um den Code unlesbar zu machen bzw. eine Wiederherstellung/Decompilierung zu erschweren, kann man mit einem Obfuscator arbeiten.
Es stellt sich aber immer die Frage, wie sinnvoll das ist...
Security by Obscurity halte ich nicht für sinnvoll.
Bei den sichersten Verfahren liegt der Quelltext offen.
Ich würde auch niemals mit einem Programm verschlüsseln, wo der Quellcode nicht offen liegt.
Das hat zwei Gründe:
1. Wenn tausende kluge Menschen auf der ganzen Welt in den Code schauen, kann das Verfahren auf Herz und Nieren geprüft werden und eventuelle Schwachstellen können so schnell aufgedeckt werden.
2. Wer garantiert, daß in einem Closed-Source-Programm keine Hintertür eingebaut wurde?
Hier ein paar Links für dich, die dich eventuell interessieren:
http://de.wikipedia.org/wiki/Kryptografie
http://de.wikipedia.org/wiki/Asymmetrisches_Kryptosystem
http://de.wikipedia.org/wiki/Symmetrische_Verschlüsselung
http://de.wikipedia.org/wiki/Blockverschlüsselungsverfahren
http://www.cryptool.de/
Schöner Gruß,
rob