String in der EXE Datei verschlüsseln
-
Hallo,
wenn ich ein String in einem Programm festlege z.b.:const char szTest[] = "HALLO WELT";
sieht man das und kann es auch in der EXE-Datei ändern.(mit Hex-Editor).
Nun habe ich mal ein paar Dinge ausprobiert und bin zu einer einigermassen guten Lösung gekommen, damit man das nicht mehr so leicht ändern kann:
#include <stdio.h> const int XKEY = 25; const char CLASSVERSION[5] = {'T'^ XKEY ,'E'^ XKEY ,'S'^ XKEY ,'T'^ XKEY,0 ^ XKEY}; char CLASSVERSION2[5]; void DecrExOr(int key,char* szInput, char* szOutput) { int i = 0; while (szInput[ i ] != 0) { szOutput[ i ] = szInput[ i ] ^ XKEY; i++; } szOutput[ i ] = szInput[ i ] ^ XKEY; } int main(int argc, char* argv[]) { DecrExOr(XKEY,(char *)&CLASSVERSION,(char *)&CLASSVERSION2); printf("%s",CLASSVERSION2); return 0; }
(kann sein das da noch Bugs drin sind, hab das nicht in der Art getestet)
Der Sinn dürfte aber klar sein, erst wird der Konstante string mit XOR verschlüsselt, und dann mit der einen Funktion wieder entschlüsselt.
So wird normalerweise nichts in der EXE von dem String gezeigt.
Naja XOR Verschlüsselung ist nicht so gut, aber fuer meine Zwecke reichts denke ich.
Mann sollte halt nicht auf den ersten Blick den Copyright Namen und die Versions Nummer ändern können.Gibt es da auch andere Lösungen?
-
nö, deine Lösung ist doch okay. Jemand mit Ahnung wird das XOR Zeugs wahrscheinlich schnell durchschauen.
Ansonsten könntest du auch einen Bin Zipper nehmen oder ein Programm schreiben, was die Binär Datei beim starten entschlüsselt und dann in den Speicher packt.
Wobei deine Methode die schnellste sein sollte.
-
bin zipper? is das sowas wie pkzip aus den DOS zeiten.
Funktionieren die auch mit Win32 Programmen?