Регистрация WinRAR 3.0 - бесплатно
Автор: Bad_guy
WEB сайт: http://cracklab.narod.ru
Для тех, кто пришёл просто за крэком к 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:
Говоришь - "незарегистрированная версия" в заголовке окна - получай
Теперь, как сделает программист:
Сначала поставит "незарегистрированная версия" в заголовке окна, а потом узнает время - вряд ли, что подтверждается на практике.
Попробуем, насколько "солёненький" 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 и тут я решил поставить брэйкпойнт на память и посмотреть, что программа всё-таки делает с этой переменной ?
За всё количество прерываний по этому брэйку, два раза пришлось сменить значение по этому адресу (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;
DestroyWindow(Win);
Messagebox(Win, PChar('Автор крэка: Bad_guy Выпущен:' +
'25.07.02 Ограничения: вы не сможете использовать "электронную' +
'подпись" Адрес программы:' +
'http://cracklab.narod.ru/dload/wrar300full.zip'), 'About', MB_OK);
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.
|
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
}
|
Удачи вам в вашей деятельности, чем бы вы ни занимались, Bad_guy.
|