@delphifreund: hinn bekommen kann man so ziemlich alles, man kann es den leuten nur schwer machen. Und wenn ein Programm in jeder Procedure noch die checksumme der Procedure nutzt um korrekte arbeit zu leisten ist es doch schon etwas aufwendiger das programm zu cracken wenn man ohne diesen mechanismus vorher nur Gleich einfach durch Ungleich ersetzen brauchte.
So, mal noch nen kleines Beispiel für die Leute die nicht wissen was ich meine:
Delphi-Quellcode:
type
PBuffer255 = ^TBuffer255;
TBuffer255 = array[0..255] of char;
[...]
procedure TForm1.Button1Click(Sender: TObject);
var L1: TBuffer255;
LSumme, LCount: Integer;
begin
L1 := PBuffer255(@TForm1.Button1Click)^;
LSumme := 0;
for LCount := 0 to 255 do
begin
inc(LSumme, Byte(L1[LCount]));
end;
if LSumme = 35 then
begin
ShowMessage('ja');
end;
showmessage(inttostr(LSumme));
end;
Wenn man jetzt "LSumme = 35" in "LSumme <> 35" ändert so ist der Wert von LSumme ein anderer als vorher. Und wenn man den Wert in LSumme als Grundlage für weitere Berechnungen nimmt und nicht einfach ausgeben lässt so kann es passieren das die procedure auf einmal was ganz anderes macht als vorher.
Noch eine Schutzvariante ist das man einfach den Inhalt der Funktion rauspatcht (also mit 0 in der Exe auffüllt) und den eigentlichen Programmcode in den Dongle auslagert und später bei programmstart den programmcode aus dem dongle liest und zurück schreibt. Zwar wurde auch dieser Schutz schon geknackt aber es erschwert die arbeit ein wenig und einige geben vielleicht doch auf.