|
|||
Скачать The Simplest Executable Cracker
18.09.1997 Допустим, имеется файлик под именем 'system.crk': === Hrm... === 00015239: C8 55 0001523A: 20 8B 0001523B: 00 EC 0001523C: 00 90 === Hrmm.. === Также есть файлик 'system.fpd', который, собственно, и надо крякнуть, то есть внести изменения в байты по адресам, указанным в файле .crk А вот и пример проги docrk.pas: Можно конечно много чего надобавлять, так что, коль чего, так спрашивай :) С наилучшими пожеланиями, Alexey ( AKA CraZyAleX ). {----------------------------------------------} { From : Alexey Trizno 2:5030/633.34 18.09.97} { Subj : Простой Кракер } {----------------------------------------------} { usage: docrk fileforcrack crk_file } { т.е. в параметрах задаем: } { какой_файл_кракнуть } { и затем как_кракать (.crk файл) } {----------------------------------------------} Const hex : String = ('0123456789ABCDEF'); Procedure usage; begin writeln(' usage: docrk fileforcrack crk_file'); halt; end; Function GetDec(Var s : String) : LongInt; Var i : Integer; r : LongInt; b : LongInt; Begin r := 0; For i := 1 to Length(s) do Begin If s[i] < 'A' Then b := Byte(s[i]) - Byte('0') else b := Byte(s[i]) - Byte('A') + 10; r := (r shl 4) + b; end; GetDec := r; end; Var f : File; t : Text; s : String; addr, oldb, newb : String; a : LongInt; o, n : Byte; b1 : Byte; Begin If paramcount <> 2 then usage; Assign(f, paramstr(1)); Reset(f, 1); Assign(t, Paramstr(2)); Reset(t); While not EOF(t) do Begin ReadLn(t, s); addr := Copy(s, 1, 8); oldb := Copy(s, 11, 2); newb := Copy(s, 14, 2); a := GetDec(addr); o := GetDec(oldb); n := GetDec(newb); Seek(f, a); BlockRead(f, b1, 1); If b1 <> o Then Begin Writeln('Bad original byte at offset ', addr, 'h'); Break; end; Seek(f, a); BlockWrite(f, n, 1); end; Close(t); Close(f); end. | |||
© 2009–2024 Russian Pascal Developer Network.
Техническая площадка: ISBIZ Хостинг |