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