Оригинал статьи и упакованная прога  [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”.

[Image]

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

[Image]

ImageBase

Теперь мы знаем ImageBase. Запомним это значение, т.к. впоследствии оно нам понадобиться.  Окна “Dump” и “MemoryMap” можно закрыть.

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

[Image]

Теперь на панели отображения дампа памяти (находится в нижнем левом углу отладчика) выделим

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

[Image]

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

[Image]

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

[Image]

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

[Image]

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

Запускаем OllyDump Plugin, записываем offset OEP в поле, отмеченное на рисунке красным цветом и ставим галочку “Rebuild Import”. Жмем кнопку Dump и указываем имя файла.

[Image]

Прога распакована!!!

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

“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 :(. Место перехода на ОЕР придется искать прокруткой части кода распаковщика, пока не встретится последовательность команд:

[Image]

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