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

{codecitation class=»brush: pascal; gutter: false;» width=»600px»}

Автор: 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:

: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;

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.

{/codecitation}

Добавить комментарий