Распаковка ASPack v 2.12 с
помощью OllyDbg
Оригинал
статьи и упакованная прога [124 KB-RAR]
http://biocyborg.narod.ru/rev/mupaspack.rar
В этой статье будет
рассмотрен пример распаковки ASPack v
2.12. Способ также подходит и для
распаковки версии 2.1. Будет ли этот
метод работать с другими версиями
пакера, мне не известно.
Загрузим нашу жертву
Aspacked.exe в Olly. Появится сообщение "Entry
point Alert" - просто нажмем "ОК".
Если бы при упаковке исполнимого
файла была указана опция "max. compression",
появилось бы еще одно сообщение с
заголовком "Compression code?" и
предложением анализировать сжатый
код. В таком случае, чтобы сэкономить
время, просто нажмите "Нет".
Сначала определим ImageBase.
Открываем MemoryMap (Alt+M) и ищем в колонке
"contains" текст "PE HEADER"
напротив которого в колонке "owner"
будет указано "AsPacked" (AsPacked.exe -
имя исследуемой программы). Выделим
эту строку, и щелкнем по ней правой
кнопкой. В открывшемся контекстном
меню выберем пункт "Dump".

Откроется новое окно ("Dump").
Развернем окно отладчика и окно "Dump"
на весь экран и нажмем 2 раза клавишу
PageDown. Увидим примерно следующее:

ImageBase
Теперь мы знаем ImageBase.
Запомним это значение, т.к.
впоследствии оно нам понадобиться.
Окна "Dump" и "MemoryMap" можно
закрыть.
Приступим к распаковке.
Сейчас мы находимся на точке входа
программы "AsPacked.exe" на команде
PUSHAD. Нажмем один раз F8 и окажемся
на команде CALL. Щелкнем правой кнопкой
по значению регистра ESP и выберем в
контекстном меню пункт "Follow In Dump",
как показано на рисунке:

Теперь на панели
отображения дампа памяти (находится
в нижнем левом углу отладчика)
выделим мышью четыре первых байта,
щелкнем правой кнопкой на выделении
и установим брейпоинт следующим
образом: BreakPoint->Hardware, on acces ->Dword.

Если теперь запустить
программу на выполнение (F9), то наш
бряк сработает вот здесь (если вы не
увидите похожего кода, нажмите F9 еще
пару раз):

По F8 дойдем до инструкции
RET (004053BF), нажмем F7 и... окажемся прямо
на OEP!!!

Чтобы увидеть нормальный
ассемблерный текст, щелкнем в окне
кода правой кнопкой мыши и выберем
"Analysis->Analyse code":

Итак, мы нашли ОЕР (00401000).
Теперь можно сдампить распакованную
в оперативной памяти прогу на диск.
Чтобы сделать это, нам нужно узнать
оффсет адреса OEP. Offset адреса
определяется по формуле: Offset=Addres-ImageBase.
В нашем случае offset OEP = 401000-400000=1000.
Запускаем OllyDump Plugin,
записываем offset OEP в поле, отмеченное
на рисунке красным цветом и ставим
галочку "Rebuild Import". Жмем кнопку
Dump и указываем имя файла.

Прога распакована!!!
Далее автор передает
приветы своим друзьям, знакомым,
родственникам, любимой собаке и
китайцам и выражает благодарность
всем, кто принимал участие в
исправлении и дополнении этой статьи:
"This tut was done by Mr_geek (all right reserved for #biw lol j/k)
Thanks to all my friends from: {efnet}: #BIW, #BRCrackers, #mup, #Unpacking, {brasnet}: #CrackX, #erXTeam. Also for: |Mchuva| =)
Special greetz for one friend: rumble, who toach me how to unpack aspack =P thx dude!
Well, after I finished the tut chainie helped me to fix a lot of things, and explain them better, so it's impossible not to mention his nick :)
I hope you liked my tut ; ) cya in next tut and OF COURSE in #BIW =D"
Примечания переводчика. 1)
Обычно для лучшего сжатия
исполнимого файла в ASPack указывают
опцию "max. compression". В этом случае
после снятия дампа может
потребоваться восстановление
таблицы импорта, для чего можно
воспользоваться программой ImpRec. 2)
Описанным в статье способом можно
распаковывать UPX и другие простые
пакеры. 3) Если дампить прогу,
находясь на OEP, как это было сделано в
статье, то ImageBase можно не определять и
не рассчитывать offset OEP - его значение
обычно автоматически определяется
из регистра EIP. 4) Если вы раньше не
занимались распаковкой программ,
рекомендую почитать дополнительно
информацию по теме на www.cracklab.ru.
5) Метод не работает в win98 :(. Место
перехода на ОЕР придется искать
прокруткой части кода распаковщика,
пока не встретится
последовательность команд:

Информация
приведена исключительно для
ознакомления. Применение данной
информации в незаконных целях
категорически запрещается.
© Mr_geek, перевод by BioCyborG
|