Регистрация WinRAR 3.0 - бесплатно!

Перейти на главную страницу, индексную страницу.


Статью написал: Bad_guy
Статья создана: 24.09.02

Для тех, кто пришёл просто за крэком к WinRAR 3.0:
WinRAR 3.0 Full Rus с крэком - http://cracklab.narod.ru/dload/wrar300full.zip
Сам крэк для WinRAR 3.0 Full Rus - http://cracklab.narod.ru/dload/wrar3fp.zip

Наконец-то мои руки добежали по кнопкам до написания этой статьи, но идея кипела в моей голове уже долгое время, не давая мне есть, спать, ходить, сидеть, ну и так далее... неужели я успокоюсь после написания статьи, наверное НЕТ (идеи распирают голову вот-вот она лопнит, придёться экран вытирать... э-э-э, чего-то меня понесло, пора переходить к делу).

Одним прекрасным днём родилась идея обновить любимый архиватор ВинРАР, я зашёл на сайт rarsoft или rarlab (не помню как он тогда назывался) и, о чудо, увидел, что мне сейчас доступен WinRAR 3.00 beta 4, да ещё и русская версия, я получил вожделенные ~980Kb и, установив, заметил небезизвестное (через букву "ы") окошечко с 40 дневным предложением поюзать UNREGISTERED VERSION. Я не помню такого дня, чтоб я не воспользовался Winrar'ом хотя бы один раз и, естественно, наг окно через пару дней мне надоело и решил "Иванушка-дурачок" снять его НАВСЕГДА (ФОРЭВА - для тех, кто в танке).

Скажу сразу, что для осуществления взлома мне потребовался только отладчик SoftIce, но позже понадобился и шестнадцатиричный редактор (WinHEX) и Delphi, а ещё текстовый редактор Bred, чтобы писать эту статью.

Допустим, вы запустили WinRAR 3.0, увидели всё то же окошко и задумались какой же ставить брэйкпойнт? Я тоже когда-то над этим задумался и что-то придумал, что - сейчас уже выветрилось из головы... попробую вспомнить (засечём время).
Прошло 10 минут... напрочь забыл - начал врубаться по-новой.
Говоришь, 40 дней - ставим брэйк в SoftIce:
:bpx GetLocalTime
Говоришь - "незарегистрированная версия" в заголовке окна - получай
:bpx SetWindowTextA
Теперь, как сделает программист:
Сначала поставит "незарегистрированная версия" в заголовке окна, а потом узнает время - вряд ли, что подтверждается на практике.
Попробуем, насколько "солёненький" WinRAR нам попался - запускаем его.
004367B3 - здесь у нас GetLocalTime;
0043FA27 - а здесь SetWindowTextA;
Скорее всего между этими двумя адресами и будет вычисление "зарегистрированности" версии.
Сразу после 004367B3 идёт вызов какой-то процедуры, которая возвращает результат в AL в виде 0 или 1, а затем значение AL закидывается в некоторый адрес памяти. Поглядев внимательно внутрь этой процедуры, я заметил, что она начинает проверять файл RARReg.Key (я не сказал: у меня был легальный ключик для 2.9 версии, я его положил первым делом в папку с новым WinRAR 3.0), пока я смотрел процедуру я успел понять, что в принципе она должна как-то возвратить значение AL не 0, а 1, но я пошёл дальше.
AL закидывается в некоторый адрес памяти - я заменил значение AL перед этим и "отпустил" программу на выполнение, программа загрузилась как "незарегистрированная", но когда она прервалась по SetWindowTextA при создании НАГ-окна я посмотрел в тот адрес памяти, где должна была быть 1 и увидел там 0 и тут я решил поставить брэйкпойнт на память и посмотреть, что программа всё-таки делает с этой переменной ?
:bpm 48dd1c rw
За всё количество прерываний по этому брэйку, два раза пришлось сменить значение по этому адресу (48dd1c) с 0 на 1 (команда :eb - для тех, кто не знает) и увидел на экране зарегистрированную версию WinRAR 3.0 beta 4 Rus.
Посмотрим, где же в память записывается 0, в какой процедуре ? - а в той же, что и в первом случае, значит просто находим место в ней где сделаем, чтобы в AL ВСЕГДА возвращалось значение 1 и будем писать крэк для WinRAR 3.0 beta 4 Rus.

Как оказалось технология та же и для WinRAR 3.0 Full, но я думаю, что с легкостью по этому же принципу можно будет создать кряк и для WinRAR 3.1, 3.2 и может 3.3, ну а потом уж автор WinRAR (мультимиллионер супершароварщик Евгений Рошал или его наёмники) найдут в инете эту статейку и закроет лазейку, а мы постараемся найти другую !

Что-то у меня получилось не внятно как-то, ладно в таком случае дам я вам ещё исходники патчера для WinRAR 3.00 Full (между прочим для минимизации размера написал я его на Delphi без использования VCL, то есть на WinAPI):


//--------------PATCHER.DPR----------------
Program Patch;

Uses windows,messages, shellapi;

const
ar  : array[1..6] of byte = ($e8,$bd,$07,$00,$00,$58);
ar2 : array[1..6] of byte = ($b8,$01,$00,$00,$00,$90);
var
msg: tmsg;
win: hwnd;
bol: boolean;
i,b: byte;
  f: file of byte;

{$R API.RES}

Procedure CreateReg;
var f1:textfile; str:lptstr;
begin
Assignfile(f1,'RarReg.b_g');
rewrite(f1);
Writeln(f1, 'RAR registration data');
Writeln(f1, 'Bad_guy');
Writeln(f1, 'Advanced GOD Pro version');
Writeln(f1, 'UID=fd402b81950501fbd1a1');
Writeln(f1, '6412212250d1a118e384ae1996cdea4f90d100b3dcd53ea5fa77c2');
Writeln(f1, 'a2a9458b4636334c81d46035c6ab9048e2c5c62f0238f183d28519');
Writeln(f1, 'aa87488bf38f5b634cf28190bdf438ac593b1857cdb55a7fcb0eb0');
Writeln(f1, 'c3e4c2736090b3dfa45384e18e9de05c5860c0cbfb4a4cbbe9549e');
Writeln(f1, 'b4ca3bc23f80d0cde2d91ba211839f05b0a5de11631072687e814d');
Writeln(f1, 'd0fa0ace9439b90564d3ba7de5413d0824487a50f64e6ea360c858');
Writeln(f1, 'ee31cdacb655824a7a443ec0da598dfb6e79f305d8bf4260523534');
closefile(f1);
end;

Function SettingsDlgProc(Window : hWnd; Msg,WParam,LParam : Integer): Integer; StdCall;
Var S : String;
Begin
Result := 0;
Case Msg of
wm_InitDialog : Begin
Result := 0;
End;
wm_Command : Begin
case LoWord(WParam) of
50:
begin
AssignFile(f,'winrar.exe');
{$i-}
Reset(f);
{$i+}
If IoResult <> 0 then
Messagebox(Win,'An error ocured while opening file','Error',MB_OK)
else begin
If Filesize(f) = 752640 then begin
Seek(f,$B26A);
bol := true;
for i:=1 to 6 do
begin
Read(f,b);
If b <> ar[i] then bol := false;
end;
if bol then begin
Seek(f,$B26A);
for i:=1 to 6 do
Write(f,ar2[i]);
Closefile(f);
CreateReg;
Messagebox(win,'Patched succesfully','Congratulation',MB_OK);
end
else
Messagebox(win,'An error ocured while patching','Error',MB_OK);
end
else
Messagebox(win,'Wrong file size','Error',MB_OK);
end;
end;
51: DestroyWindow(Win);
53: Messagebox(Win,PChar('Автор крэка: Bad_guy'+#13#10+'Выпущен:
25.07.02'+#13#10+'Ограничения: вы не сможете использовать "электронную
подпись"'+#13#10+'Адрес программы:
http://cracklab.narod.ru/dload/wrar300full.zip'),'About',MB_OK);
54:
ShellExecute(win,'open',PChar('http://cracklab.narod.ru/'),nil,nil,SW_MAXIMIZE);
end;
end;
wm_Close   : DestroyWindow(Win);
wm_Destroy : PostQuitMessage(0);
else Result := 0;
end;
end;

Procedure RunSettings;
Var Result : Integer;
Begin
Win := CreateDialog(hInstance,PCHar(101),0,@SettingsDlgProc);
Showwindow(Win,SW_SHOW);
Updatewindow(Win);
End;


begin
RunSettings;
While GetMessage(Msg,0,0,0) do
begin
TranslateMessage(Msg);
DispatchMessage(Msg);
end;
end.
//---------END OF PATCHER.DPR-------------

//-------------API.RC---------------------
101 DIALOG 0, 0, 266, 95
STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUPWINDOW |
WS_DLGFRAME
CAPTION "WinRAR 3.00 Rus Patch by Bad_guy"
FONT 8, "MS Sans Serif"
{
DEFPUSHBUTTON "Patch", 50, 13, 73, 59, 14
PUSHBUTTON "Cancel", 51, 188, 73, 65, 14
CTEXT "[-== Bad_guy ==-] \n Remove 40-day limit and NAG-screen \n i'm a genius,
you are a shit", 100, 13, 42, 240, 27, SS_SUNKEN
CONTROL 101, -1, "STATIC", SS_BITMAP | SS_CENTERIMAGE | SS_REALSIZEIMAGE |
SS_SUNKEN, 13, 8, 240, 30
PUSHBUTTON "About", 53, 75, 73, 50, 14
PUSHBUTTON "Our Website", 54, 130, 73, 54, 14
}
//-----------END OF API.RC---------------

Удачи вам в вашей деятельности, чем бы вы ни занимались, Bad_guy.


Материалы находятся на сайте http://cracklab.narod.ru/doc/






Hosted by uCoz