Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #82, ОКТЯБРЬ 2005 г.

Пластырь для WinRar

Максим Федотов aka bl1n

Хакер, номер #082, стр. 082-062-1


(bl1n@mail.ru)

Взлом популярного архиватора - это очень легко!

Все мы знаем о великом творении Евгения Рошаля, которое может запаковать и распаковать все и вся. Но вот незадача - за то, чтобы архиватор работал как следует и не надоедал гнусными окошками с просьбами заплатить денег, необходимо этих самых денег отвалить. Мне моей стипендии для этого недостаточно, и поэтому я решил схалявить, а заодно и потренировать свои мозги. Оказалось, что крэкнуть WinRar - проще простого! Сейчас расскажу, как я это сделал.

[зачем платить?]

В самом деле, так ли уж нужно регистрировать WinRar, чем же он так надоедает? Может показаться, что программа довольно либерально работает: даже на истекшем триале она не лишается функциональности. Однако каждый раз в течение 30 дней при запуске винрара появляется надпись о том, что ты не удосужился заплатить денежку. От этого развивается недюжинный комплекс неполноценности, который бьет по твоей шаткой психике как молот по наковальне. Этого нам совершенно не нужно, долой комплексы. Если же ты не заплатишь денег и после 40 дней использования программы, софтина начнет доставать тебя нагами - окошками с мольбами о регистрации - и во время работы архиватора. В общем, отвратительно себя ведет эта программа. Надо ее перевоспитывать.

[что нам понадобится]

Для плодотворной воспитательной работы нам потребуется дизассемблер w32dasm, патчер Codefusion, отладчик ollydbg, шестнадцатеричный редактор, вроде heiw, и какой-нибудь пристойный редактор ресурсов (скажем, reshacker или peid). Сейчас я расскажу, каким образом мне удалось поломать WinRar, и опишу логику своих рассуждений.

[let's go]

Первым делом я запустил peid и открыл exe'шник winrar. Оказалось, что программа ничем не запакована и вдобавок написана С - идеальный вариант для меня. Свои опыты я решил начать с того, чтобы избавиться от нагов и убирать надпись «Незарегистрированная версия». Для этого я запустил Olly и открыл в нем WinRar. Затем я установил брэк (breakpoint) на функцию, вызывающую наг:

Bpx DialogBoxParamA

Здесь DialogBoxParamA - это имя функции, показывающей окошко с просьбой о регистрации. Теперь нужно запустить программу и ожидать, что ее выполнение прервется как раз при вызове контролируемой функции. Давим на enter, жмем f9 и все получается в точности так, как мы планировали, на адресе 00440f6e мы вваливаемся в Olly и видим там такой код:

[код, вызывающий процедуру показа нага]

00440F56 .6A 00 PUSH 0 ; /lParam = NULL

00440F58 .68 F44F4400 PUSH WinRAR.00444FF4 ; |DlgProc = WinRAR.00444FF4

00440F5D .FF35 1C164B00 PUSH DWORD PTR DS:[4B161C] ; |hOwner = 000B0638 ('My Downloads - WinRAR (незаре...',class='WinRarWindow')

00440F63 . 68 E15F4900 PUSH WinRAR.00495FE1 ; |pTemplate = "REMINDER"

00440F68 . FF35 E0F94900 PUSH DWORD PTR DS:[49F9E0] ; |hInst = 00400000

00440F6E E8 67F30400 CALL gt; ; \DialogBoxParamA

Я нажал F8, чтобы перейти на строчку дальше, и увидел, что появился наг. То, что надо. Записав адрес, я вышел из Olly и направился к Hiew. Выбрав mode-decode и нажав goto, я ввел полученный адрес с точкой вначале и заменил там 5 байт, записав в них 90, то есть просто занопил их, после чего сохранил файл и вышел из Hiew. Теперь настало время попробовать запустить архиватор. Кликнув два раза по знакомому ярлычку, я обнаружил, что успевшие уже надоесть наги пропали, однако осталась надпись наверху, которая портит весь эффект. Я решил потереть ее, просто изменив заголовок в редакторе ресурсов. Для этого открыл в reshacker'е winrar, нашел строчку «незарегистрированная копия» и изменил ее на кое-что более приятное. Вот и все, приятель, так я поломал WinRar. Правда, элементарно? Простейший пример, простейший крэк. Ну и скажи мне теперь, что ты не справишься с чем-то подобным.

Содержание  Вперед на стр. 082-062-2