В этой статье рассказывается о взломе всем известной программы WinRar. Данная информация предоставлена исключительно для ознакомления! Для работы, Вам потребуются программы: - SoftICE
- W32dasm (для того, чтобы узнать Offset адрес)
- WinHEX (шестнадцатеричный редактор)
- Delphi (это если вы будете писать само лекарство)
WinRar по истечению 40 дневного пробного периода включает окошко, в котором он просит денег. Дабы выключить это окошко нужно либо заплатить, либо зарегистрировать его вручную (взломать). Конечно, был выбран второй путь. Крякнуть сам WinRar не получалось и тогда было решено: нужно искать не как зарегистрировать WinRar, а как убрать всплывающее окошко. Запускаем WinRar Р. И что видим? Появляется всплывающее окошко, но не сразу, а через некоторое время. Это значит, что заводиться таймер, по которому выполняется процедура, показывающая это самое окошко. Дабы избавится от него, нужно просто «убить» этот таймер. Но чтобы его «убить» нужно, знать его адрес, а потом просто чуть переписать (на место команды CALL SetTimer записать необходимое (5 в нашем случае) кол-во байт 90h, 90h это команда nop, она не делает ничего). Ставим в SoftICE брекпоинт на функцию SetTimer. Сделать это можно так: bpx SetTimer Теперь запускаем Rar. У Вас должен выскочить SoftICE. Если выскочил, жмите F5 пока не окажитесь в WinRar. Как только вы прервётесь, в RAR указатель выполняемой строчки будет тут: 0043FAA0 MOV EAX,004AF1C4 А выше то, что нам нужно: 0043FA93 E8C0E90400 CALL [User32!SetTimer] Теперь убираем бряк (bc 0) и закрываем SoftICe. Значит так: у нас есть код команды CALL SetTimer, а это значит, что осталось узнать Offset код (для правки в WinHEX'e) и переписать байты E8 C0 E9 04 00 на 90 90 90 90 90 Открываем W32dasm, а в нём открываем WinRAR.exe. Далее жмём F12 и вводим 0043FA93. Жмём ОК. Теперь мы оказались на той же самой строчке, что и в SoftICE, но уже не в запущенном файле, а в дизассемблированном. Смотрим в строку состояния и запоминаем Offset адрес этой строчки (0003F09Bh). Теперь у нас есть Offset адрес команды вызова таймера и байты, которые нужно подправить. Открываем WinRar.exe в WinHEX'e, ищем адрес 0003F090 в колонке слева. После то как нашли, ищем букву B сверху. Как вы уже, наверное, успели заметить байты от 0003F09B до 0003F09F соответствуют байтам E8 C0 E9 04 00. А это значит, что их все нужно поменять на 90. Меняем. После чего сохраняем файл WinRAR.exe и запускаем. Если нет надоедливого всплывающего окошка, значит, вы всё сделали правильно и WinRAR уже не просит денег при каждом запуске, а это значит, что мы добились то, чего хотели. Патч на Дельфи для WinRar. Он не обременен проверкой те ли это байты, но проверяет существование файла в папке с собой. program Crack; {$APPTYPE CONSOLE} uses Classes, Windows, SysUtils; var f:TFileStream; s:byte; begin Writeln('Crack for WinRAR 3.xx by Angel'); Write('Press Enter to contine...'); Readln; if not(FileExists('WinRAR.exe')) then begin Write('File not Found!!!'); ReadLn; Halt; end else begin s:=$90; f:=TFileStream.Create('WinRAR.exe',fmOpenWrite); f.Seek($3F09B,soFromBeginning); f.Write(s,sizeof(s)); f.Seek($3F09C,soFromBeginning); f.Write(s,sizeof(s)); f.Seek($3F09D,soFromBeginning); f.Write(s,sizeof(s)); f.Seek($3F09E,soFromBeginning); f.Write(s,sizeof(s)); f.Seek($3F09F,soFromBeginning); f.Write(s,sizeof(s)); f.Free; end; Write('File "WinRAR.exe" Cracked!!!'); ReadLn; end.
|