Ãœðù - Xakep Online
Ãœðù - Xakep Online
Ãœðù - Xakep Online
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
взлом<br />
Типичный AsPack! Цикл, убиваемый после распаковки<br />
убедиться в том, что мы все делаем верно, воспользуемся<br />
утилитой PEid — хорошей помощницей<br />
в определении типа пакера (протектора/<br />
компилятора)(http://peid.has.it), которую можно<br />
скачать на любом крякерском сайте. Запускай<br />
утилиту и скармливай ей freshui.exe. Она моментально<br />
выдаст нам результат: «ASPack 2.12<br />
Alexey Solodovnikov». Значит, мы с тобой сильно<br />
ошибались, ведь AsPack действует немного<br />
иначе, чем совсем уж тривиальные пакеры. Он<br />
использует для перехода на OEP не JMP N, а<br />
конструкцию вида:<br />
POPAD; восстановление регистров<br />
JNZ adress<br />
MOV EAX,1<br />
RETN 0C<br />
PUSH 0; OEP кладется в стек<br />
RETN ; переход на OEP<br />
Нас интересуют только первая и две последние<br />
инструкции. Комментарии дают ясное представление<br />
о работе этого куска кода. Стоит только<br />
упомянуть, что команда PUSH 0, после того как<br />
мы прервемся на ret, положит в стек совсем не 0,<br />
а значение OEP. Итак, ищем POPAD с хвостом в<br />
виде вышеуказанного кода. Такой набор располагается<br />
по адресу 005653AF:<br />
005653AF POPAD<br />
005653B0 JNZ SHORT<br />
freshui.005653BA<br />
005653B2 MOV EAX,1<br />
005653B7 RETN 0C<br />
005653BA PUSH 0<br />
005653BF RETN<br />
OEP найдена!<br />
По адресу 005653BF ставь точку останова, для<br />
этого выдели строку и нажми . Все готово,<br />
запускай программу на исполнение ().<br />
Выполнение ее тут же и прервется, причем на<br />
вершине стека будет лежать адрес OEP, равный<br />
00507340 (заметил, как изменилась команда<br />
PUSH 0?), его мы запишем. Теперь переходим<br />
на начало кода программы, сделав один шаг<br />
(). Мы попадем в место, очень похожее<br />
на кучу хлама в виде данных, неправильно<br />
интерпретированных в качестве инструкций, но<br />
это далеко не так. На самом деле, этот «массив»<br />
— ни что иное, как начальный код, стартующий<br />
с OEP! Если не веришь, нажми .<br />
После анализа ты увидишь характерное начало<br />
программы.<br />
На время сверни OllyDbg. Теперь, как и обещал,<br />
я скажу, зачем мы остановили программу на OEP.<br />
Для того чтобы получить более или менее работоспособную<br />
программу со снятым упаковщиком,<br />
нужно сделать дамп, он же моментальный снимок<br />
области памяти, где размещена наша программа,<br />
причем не когда-нибудь, а именно сразу после<br />
распаковки, когда программа прервется на OEP.<br />
Для этой цели подойдет инструмент LordPE за<br />
авторством Yoda (респект!). Запускай эту утилиту,<br />
выбирай в окне процессов нашу программу,<br />
висящую под отладчиком, и, нажав по ней правой<br />
кнопкой мыши, выбирай в меню «Dump full». Сохрани<br />
файл под именем dump.exe. Полученный<br />
дамп будет неработоспособен, так как таблица<br />
импорта не восстановлена. Привести dump.exe<br />
в чувство поможет утилита Import Reconstructor.<br />
Запусти ее. Выбери в списке Attach to an active<br />
Process процесс freshui.exe и введи OEP в<br />
соответствующее поле программы. Причем OEP в<br />
этом случае будет равняться 00507340‐ImageBase<br />
=00507340-00400000=00107340 (ImageBase — это<br />
адрес, с которого в памяти идет код программы,<br />
его нам указал отладчик). Теперь жми на кнопку<br />
«Get Import». При этом не обращай внимания<br />
на издержки — мусор в виде нераспознанных<br />
функций, который будет отображен среди верно<br />
отысканных данных в виде двух последних<br />
ветвей: »?FThunk:0010F8E0 NbFunc:3 valid:no»<br />
и »?FThunk:0010F8F0 NbFunc:3 valid:no». Ты<br />
можешь убедиться в ненужности этих «элементов<br />
таблицы импорта», если перейдешь по<br />
смещениям 0050F8E0 и 0050F8F0 и взглянешь на<br />
содержимое памяти. Первый фантомный Fthunk<br />
— строка «kernel32.dll», то есть имя библиотеки,<br />
импорт функций из которой распознан, а второй<br />
«непрошеный гость» — часть имени функции,<br />
которая размещена в Import Table первой<br />
(DeleteCriticalSection). Мусор нужно отрезать,<br />
Полезный<br />
крякерский ресурс<br />
Все инструменты, упомянутые в статье, можно<br />
найти на лучшем крякерском ресурсе<br />
www.cracklab.ru. Помимо этого, сайт располагает<br />
внушительной коллекцией статей по крякингу и<br />
набором различных полезных ссылок. Конечно<br />
же, нельзя не упомянуть о форуме. Он является<br />
главной достопримечательностью ресурса, и следует<br />
признать, что все имеющееся на сайте — это<br />
лишь приятное дополнение к наиполезнейшему<br />
форуму, где можно повстречать незаурядно талантливых<br />
людей, относящихся к элите крякинга.<br />
Среди них — [HEX], MozgC, dragon (c) и другие. Я<br />
выражаю им почтение. Спасибо, Bad_guy!<br />
xàêåð 05 /101/ 07<br />
/<br />
091