Ãœðù - Xakep Online
Ãœðù - Xakep Online
Ãœðù - Xakep Online
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
взлом<br />
леониД «CR@WleR» исупов<br />
/ crawlerhack@rambler.ru /<br />
Без лома и молотка<br />
ОбХОД ЗАщиты тВиКерА FREShuI<br />
Может быть, ты пытался взломать программу, которая тревожила тебя надоедливыми<br />
нагами. Результатом этого, наверняка, был шок: вместо читабельного листинга<br />
отладчик выдавал код, похожий на мусор. Скорее всего, это произошло потому, что ты<br />
нарвался на запакованную программу. Сегодня я на простом примере покажу тебе, как<br />
бороться с пакерами.<br />
INTrO<br />
Сейчас мы займемся программой FreshUI (это<br />
неплохой твикер для ОС Windows). Вообщето,<br />
программа для домашнего пользователя<br />
бесплатна, но после 11 дней ее использования<br />
начинает болеть голова от появления окошка с<br />
напоминанием о том, что мы должны заказать<br />
ключ у разработчика (окошко, кстати, с каждым<br />
днем держится на экране все дольше и дольше).<br />
Может, кто-то и хочет засветить свой почтовый<br />
ящик и занести его в спам-лист, но только не мы.<br />
Мы пойдем другим путем.<br />
распаковка<br />
В работе мы воспользуемся замечательным<br />
отладчиком OllyDbg — для исследования нашей<br />
программы он подойдет лучше, чем монструозный<br />
SoftIce от Numega. Итак, устанавливай<br />
отладчик, если его все еще у тебя нет, и выбирай<br />
/ 090<br />
пункт меню «File Open». В появившемся окне<br />
укажи путь к файлу нашей программы (freshui.exe).<br />
Отладчик тут же сообщит тебе о том, что<br />
программа, возможно, содержит самомодифицирующийся<br />
код или упакованное тело. После<br />
нажатия «Ok» OllyDbg спросит, надо ли анализировать<br />
код. Эта медвежья услуга нам не понадобится,<br />
ведь файл, скорее всего, запакован,<br />
и никаких понятных листингов мы не получим,<br />
так что смело отвечай: «No». Вот что мы видим,<br />
глядя на начало дизассемблированного кода:<br />
00565000 90 NOP<br />
00565001 60 PUSHAD; Сохранение<br />
регистров в стек<br />
Опытный крякер, глядя на эти инструкции,<br />
обрадуется :), так как почти все упаковщики<br />
сохраняют регистры перед переходом на цикл<br />
распаковки и это их выдает, что называется,<br />
с потрохами. А это значит, нам нужно, следуя<br />
логике, найти команду восстановления всех<br />
регистров из стека (POPAD). Само собой, эта команда<br />
выполняется после распаковки. При этом<br />
нужно также учесть, что после этой инструкции<br />
должен следовать безусловный переход вида<br />
JMP N, где N — адрес оригинальной точки входа<br />
программы (Original Entry Point, или OEP). Я хочу<br />
сказать, что после распаковки кода программы и<br />
восстановления регистров происходит прыжок<br />
на начало кода, который приобрел работоспособность,<br />
где мы и должны прерваться (о том,<br />
зачем это нужно, речь пойдет ниже).<br />
Наша цель — найти соседствующие команды<br />
POPAD и JMP N и поставить точку останова на<br />
POPAD. Поиск в OllyDbg () команды<br />
POPAD проходит успешно, но вот незадача: она<br />
нигде не соседствует с JMP N. Для того чтобы<br />
xàêåð 05 /101/ 07