000
23.05.2004, 01:48 Uhr
Tolotos
|
Hallo, wenn ich ein String in einem Programm festlege z.b.:
C++: |
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:
C++: |
#include <stdio.h> const int XKEY = 25; const char CLASSVERSION[5] = {'T'^ XKEY ,'E'^ XKEY ,'S'^ XKEY ,'T'^ XKEY,0 ^ XKEY};
void DecrExOr(int key,char* szInput, char* szOutput) { int i = 0; while (szInput[i] != 0) { szOutput[i] = szInput[i] ^ XKEY; i++; } }
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? |