Информационный сервер для программистов: Исходники со всего света. Паскальные исходники со всего света
  Powered by Поисковый сервер Яndex: Найдется ВСЁ!
На Главную Pascal Форум Информер Страны мира
   Хакерские Штучки    >>    docrk
   
 
 The Simplest Executable Cracker   Alexey Trizno 18.09.1997

Простейшая программа для внесения изменений в указанные адреса исполняемых модулей.



1k 
 

- 4INT -------------------------------------------- It's interesting - Msg : 104 of 202 Addr Date From : Alexey Trizno 2:5030/633.34 18.09.97 Subj : Простой Кракер ---------------------------------------------------------------------- Приветствую тебя, Pavel! Monday September 15 1997 13:42, Pavel beliaev телеграфировал(а) для All следующее: Pb> Hет ли у кого исходняка на сабже который бы изменял в определенном Pb> файле быйты (крякер короче). Hу вот _простейший_ примерчик: Допустим, имеется файлик под именем 'system.crk': === Hrm... === 00015239: C8 55 0001523A: 20 8B 0001523B: 00 EC 0001523C: 00 90 === Hrmm.. === Также есть файлик 'system.fpd', который, собственно, и надо крякнуть, то есть внести изменения в байты по адресам, указанным в файле .crk А вот и пример проги docrk.pas: Можно конечно много чего надобавлять, так что, коль чего, так спрашивай :) С наилучшими пожеланиями, Alexey ( AKA CraZyAleX ). --- GoldEd/386 3.00a5+ * Origin: XHouse Station, St-Petersburg, Russia (2:5030/633.34) {> Cut here. FileName= DOCRK.PAS } {----------------------------------------------} { 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.