Крекинг - взлом WinRAR 3.20



Итак, сегодня мы займёмся взломом программы-архиватора WinRAR 3.20. Скачать можно отсюда: http://files10.rarlab.com/rar/wrar320ru.exe. А также научимся пользоваться дизассемблером Win32Dasm.
Что раздражает нас в незарегистрированной версии??? Во-первых то что в загаловке программы отображается надпись «незарегистрированная копия», во-вторых через двадцать дней начинает появляться окошко с напоминаем о регистрации.

Для начала рекомендую сделать резервные копии ломаемых файлов (Ведь из-за твоей криворукости может пострадать ни в чем не повинная программа :). После этого запускаем Win32Dasm, в меню «Disassembler» выбираем «Open file to disassemble..» и выбирай Winrar.exe, ждём. Далее входим в меню «Search», выбираем «Find Text» и ищем текст «REMINDER», что в переводе означает «Напомнить». Мы оказываемся по адресу 0043EC9B. Через две строки под этой надписью мы видим вызов функции DialogParamBoxA, эта функция и отвечает за вызов гнусного окошка о напоминание о регистрации. Значит нужно найти место в программе где проверяется количество прошедших дней после установке и вызов функции показа окошка. Посмотрев немного вверх, а точнее по адресу 0043EC7E, мы обнаружим команду сравнения (cmp eax, 00000028), 28h = 40d - наши 40 дней триала. Далее по адресу 0043EC81 идёт строчка «jg 0043EC87», а через строчку, по адресу 0043EC85 – «jge 0043ECAB», выполнив переход по этому адресу мы перепрыгиваем вызов функции DialogParamBoxA. То есть программа работает так: сверяет количество дней, и если их за сорок, то осуществляется команда безусловного перехода «jg 0043EC87», если же их меньше чем сорок то выполняется «jge 0043ECAB».
Значит нам необходимо сделать так чтобы «jg 0043EC87» не выполнялся никогда, а «jge 0043ECAB» выполнялся всегда. Для этого откроем копии нашего файла в “Hacker View», жмём F4 ? Decode, затем F5 и вводим: .43EC81, жмём F3, вводим: 90 90, жмём F9. F5 и вводим: .43EC85, жмём F3, вводим: EB, жмём F9. И пока выходим - F10. Запускаем отредактированный файл и смотрим что окошко о напоминание исчезло.
Теперь осталось разобраться с надписью «незарегистрированная копия». По аналогии с предыдущим методом мы могли искать эту надпись, но в Win32Dasm русские буквы отображаются крякозябрами. Но в заголовке программы также написано: «название диска – WinRar», то весь заголовок выглядит например так: “C: - WinRar (незарегистрированная копия)”. Значит будем искать « - WinRar”, находим “%s – WinRar” - это то, что нам нужно! Посмотрим на этот кусок кода, нужные места я выделил:


* Possible StringData Ref from Data Obj ->"%s - WinRAR"
|
:004498C7 689B624900 push 0049629B
:004498CC 8D442408 lea eax, dword ptr [esp+08]
:004498D0 50 push eax
:004498D1 E8A2CC0300 call 00486578
:004498D6 83C40C add esp, 0000000C
:004498D9 803DE8ED490000 cmp byte ptr [0049EDE8], 00
:004498E0 757A jne 0044995C (это понадобится дальше)
:004498E2 A148054B00 mov eax, dword ptr [004B0548]
:004498E7 83F814 cmp eax, 00000014 (14h = 20d - через 20 дней)
:004498EA 7C05 jl 004498F1 (осуществляет прыжок)
:004498EC 83F828 cmp eax, 00000028 (28h = 40d - через 40 дней)
:004498EF 7C1D jl 0044990E (осуществляет прыжок)

что у нас по адресам 004498F1 и 0044990E??? А там у нас помещение в стэк нужных записей, после чего по адресу 00449963 у нас вызывается функция SetWindowTextA, которая и дописывает эту хрень:


* Reference To: USER32.SetWindowTextA, Ord:0000h
|
:00449963 E8F2690400 Call 0049035A
:00449968 81C400040000 add esp, 00000400
:0044996E C3 ret

И так нам необходимо чтобы выше описанные переходы не осуществлялись, их можно было забить NOP’ами, но мы поступим по-другому, посмотрев по адресу 004498E0 мы увидим команду безусловного перехода, которая перепрыгивает весь наш хлам, который делает в заголовке всё эту дрянь. Снова открываем наш файл в “Hacker View”, F4?Decode, затем F5, водим: . 4498E0, F3, и вводим EB, и снова жмём F9 и выход F10.
Проверяем, всё должно работать! На сегодня всё!!! Если что пишите мне.

Crack (holodenchik@mail.ru)



Автор:Crack::HackZona.Ru