- 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.
|