Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 1 марта!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь


Распаковка Exe Wrapper




Очень удобно, когда все крэкерские инструменты, книги и статьи в одном месте. Используйте сборник от EXELAB - вот тут.

Распаковка Exe Wrapper

VaZeR

Программа: Crackme.exe

Инструменты: OllyDbg, PeTools, Die 0.64.


О защите.

Exe Wrapper – это защита которая навешивается на файл, и при его запуске требует ввода пароля. Т.е. по идее разработчиков только тот человек кто знает пароль на файл может им воспользоваться. Но на самом деле это не так и взломать этот протектор все таки можно не зная пароля. Но тут сразу следует сказать, что это всё справедливо только для тех файлов которые запакованы пробной версией программы. Принцип работы протектора состоит в том он берет из программы кусок кода начиная с OEP, и зашифровывает его ключом.


Дамп программы

Для начала получим дамп программы с зашифрованным куском кода. Но чтобы это сделать нам нужно обойти первую проблему это окно с вводом пароля. Для этого запустим в OllyDbg нашу программу и дождемся когда выйдет стандартное окно ввода пароля:

Распаковка Exe Wrapper

Теперь поставим в отладчике бряк на MessageBoxA (bp MessageBoxA). И введем любой пароль. Остановимся на нашем брекпоинте. Далее выходим из API и оказываемся вот на этом куске кода:

Распаковка Exe Wrapper

Видим, то что бы нам обойти окно с сообщением о неправильном пароле нужно изменить переход по адресу 401873. Нужно просто поставить на него аппаратный брекпоинт:

Распаковка Exe Wrapper

Теперь еще раз введем в окне пароль и как окажемся на брекпоинте то изменим флаг нуля на противоположный. Теперь нужно поставить брекпоинт на API MapViewOfFile, после его срабатывания, выходим из неё и обращаем внимание на регистр EAX там лежит указатель на наш оригинальный файл. У меня к примеру это 0EE0000. Теперь дампим этот регион в PeTools:

Распаковка Exe Wrapper

И переименовываем получившийся дамп в .exe.


Расшифровка кода

Теперь нужно просмотреть код ниже вызова API MapViewOfFile, там я заметил две интересные API ReadProcessMemory и WriteProcessMemory. Ставим бряк на первую API и запустим программу. Посмотрим в стек на передаваемые параметры:

Распаковка Exe Wrapper

Нас здесь интересует адрес буфера и его размер – 12F6F4 и 100. Перейдем на этот адрес в окне дампе (d 12F6F4) и попутно пройдя вызов API (F8):

Распаковка Exe Wrapper

Это и есть зашифрованный кусок кода с OEP. Теперь ставим на первый байт (06) бряк на запись и остановимся в следующем месте:

Распаковка Exe Wrapper

Это и есть цикл расшифровки. В нем нам нужно знать только одно значение это CL. Теперь наша задача это найти это значение. Так как это первый байт на OEP то это сильно нам облегчает задачу. Здесь нам нужно в первую очередь это узнать на каком языке написана программа. Для этого смотрим секции файла:

Распаковка Exe Wrapper

Смотря на секции можно сказать что это скорее всего Borland. Так как есть секция tls. Теперь нужно узнать что это Borland Delphi или Borland C++. Здесь нам помогает адрес OEP. Он находится в самом начале секции кода. Значит это Borland C++. Но если трудно так на взгляд определить компилятор, то можно воспользоваться программой Die 0.64:

Распаковка Exe Wrapper

У Borland C++ OEP начинается с JMP SHORT адрес, значит первый байт в программе – EB. Теперь найдем правильно значение регистра CL:

06 xor EB = ED

Все теперь заменяем наше неправильно значение правильным и ставим брекпоинт сразу за условным переходом после цикла – 402981. Как сработает копируем область памяти и вставляем в наш дамп. Все файл распакован.


Распаковка Exe Wrapper




Скачать статью "Распаковка Exe Wrapper" в авторском оформление + файлы.
пароль архива на картинке



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS