Скачать The Simplest Executable Cracker

18.09.1997
Скачать файл (1,63 Кб)

Допустим, имеется файлик под именем '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.