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

ВИДЕОКУРС ВЗЛОМ
выпущен 12 ноября!


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

Один из способов ручной распаковки ASPack 2.12

Обсудить статью на форуме

Хорошая подборка видеоуроков, инструментов крэкера, книг и статей - здесь.

Автор: FEUERRADER <feuerrader@nm.ru>


        Цель: распаковка ASPack 2.12
 Инструменты: SoftIce 4.05 + IceDump, PEditor 1.7 by Y0da
 

Вступление: описываемый ниже способ ручной распаковки файлов, пакованных ASPack, подходит для версий 2.1-2.12 (может и еще раннее). Сразу же оговорюсь, что описываемый способ взят из иностранных источников (автор Amois). Для всеобщего удобства я перевел статью на родной язык, чтобы все желающие могли воспользоваться этим способом.

Сбор информации: в виде подопытного кролика использовался Command Line95. Запаковываем его ASPack 2.12. Теперь открываем уже пакованный ЕХЕ в PEditor 1.7. Смотрим:
  ImageBase=00400000
SizeOfImage=00014000
Открываем Sections. Если автор проги умышленно затер названия секций, определите на глаз idata. Запоминаем ее VirtualOffset=000C000. Теперь запоминаем VirtualOffset первых двух секций:
1 секция. VirtualOffset=00001000
2 секция. VirtualOffset=00008000
Пока больше ничего не надо.

Поиск ОЕР: активируем SoftIce и ICEDUMP. Делаем :bpx GetProcAddress. Запускаем пакованную прогу. Прерываемся. Делаем d "VirtualOffset_idata", т.е. :d 40C000. Не забывая ко всем адресам из заголовка прибавлять ImageBase.

 0030:0040C000 ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ??  ................
 0030:0040C010 ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ??  ................
 0030:0040C020 ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ??  ................
 0030:0040C030 ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ??  ................
 0030:0040C040 ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ??  ................
 0030:0040C050 ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ??  ................
 0030:0040C060 ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ??  ................
 0030:0040C070 ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ??  ................

Теперь нажимаем F11, пока в памяти не уберутся "?? ?? ?? ??", т.е. ждем пока idata распакуется.

 0030:0040C000 6C C0 00 00 00 00 00 00-00 00 00 00 00 C4 00 00  l...............
 0030:0040C010 E0 C1 00 00 64 C1 00 00-00 00 00 00 00 00 00 00  ....d...........
 0030:0040C020 D8 C5 00 00 D8 C2 00 00-64 C0 00 00 00 00 00 00  ........d.......
 0030:0040C030 00 00 00 00 F6 C5 00 00-D8 C1 00 00 5C C1 00 00  ............\...
 0030:0040C040 00 00 00 00 00 00 00 00-14 C6 00 00 D0 C2 00 00  ................
 0030:0040C050 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
 0030:0040C060 00 00 00 00 E4 C5 00 00-00 00 00 00 96 C3 00 00  ................
 0030:0040C070 A4 C3 00 00 68 C3 00 00-CC C3 00 00 D6 C3 00 00  ....h...........

Как только видим, что распаковалось, делаем :bpm "VirtualOffset_idata", т.е :bpm 40C000. F5. BC*. Будем искать при помощи магической команды /tracex. Но ее главный недостаток - низкая скорость. Если программа больше 1Мб, ее выполнение может быть до 10 минут. Пишем /tracex "VirtualOffset_1секции" "VirtualOffset_2секции", т.е. /tracex 401000 408000. А теперь самое утомительное, однако самое важное - ждать исполнения! О, выпрыгнул SoftIce. Смотрим, где стоит EIP=403FF0.

 016F:00403FF0  MOV       EAX,FS:[00000000]
 016F:00403FF6  PUSH      EBP
 016F:00403FF7  MOV       EBP,ESP
 016F:00403FF9  PUSH      FF

Теперь 403FF0 - это наш OEP. Снимем дамп: /dump 400000 14000 c:\dump.exe.

Испрвляем дамп: открываем дамп в PEditor 1.7. Исправляем EntryPoint на 0003FF0. Открываем Sections. На секции .rsrc (а можно и на всех секциях!) делаем DumpFixer (RawOffset=VirtualOffset & RawSize=VirtualSize). Теперь у файла появилась иконка. Запускаем дамп. Работает!

Восстанавливаем импорт: когда мы снимали дамп, то перед этим дождались, когда распакуется секция idata. А в ней уже содержался нормальный импорт, который в последствии влился в дамп. Поэтому восстановление импорта не требуется.

Примечание: этот способ распаковки подходит только для небольших файлов, хотя можно пробовать на любых. Только вот вопрос: получится ли? Потому что /tracex выполняетя, бывает, очень долго и обычно не очень-то хочется просто так сидеть и его ждать.

Спасибо за интерес к этой статье!



Все права защищены ©  2003 



Обсуждение статьи: Один из способов ручной распаковки ASPack 2.12 >>>


Материалы находятся на сайте https://exelab.ru



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


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