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

Видеокурс программиста и крэкера 5D 2O17
(актуальность: декабрь 2O17)
Свежие инструменты, новые видеоуроки!

  • 400+ видеоуроков
  • 800 инструментов
  • 100+ свежих книг и статей

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


Распаковка PeStubOEP - двухслойная защита




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

Снимаем 2 слоя PeStubOEP 1.7

Автор: Flashback/Team-X

Сайт: www.team-x.ru/Flashback

TMX site: www.team-x.ru

Цель: распаковать SignMan.exe (программа включена в архив)

Сложность: Легко

Инструменты: OllyDBG 1.1 + plugins (OllyScript, OllyDump), RDG Packer Detector 6.5


Предисловие:

Эта статья описывает снятие PeStubOEP + несложный пакер, в нашем случае – aspack 2.12.

В папку scripts входят следующие скрипты:

PeStubOEP 1.7 EP jump to EP packer – когда вы только открыли скрембленную прогу, то этот скрипт приведет вас к OEP пакера

Aspack 2.12 OEP – находит OEP, программы, пакованной Aspack 2.12, но в нашем случае он приведет к краденным байтам

PeStubOEP 1.7 stolen code jump to OEP – когда вы на краденных байтах, то он приведет вас к OEP программы

PeStubOEP 1.7 OEP recover(VC++ 6.0) – восстанавливает краденные байты программ написанных на VC++ 6.0

Полная распаковка VC++ 6.0 + PeStubOEP + Aspack 2.12 + PeStubOEP – если запустить этот скрипт, то он применит, указанные выше скрипты и выполнит всю нашу работу


О PeStubOEP:

Это простой скремблер, который можно использовать как на упакованную программу, так и на не пакованную программу(а можно дважды, к в нашем случае). В естественных условиях я видел его пару раз, например, на artmoney, но к сожалению там используется PeStubOEP без кражи первых байт.


Что мы сейчас будем делать:

1) Определим, PeStubOEP’ом ли обработана прога

2) Найдем OEP пакера

3) Найдем краденые байты

4) Найдем OEP проги и восстановим байты


Определим, PeStubOEP’ом ли обработана прога:

Мы воспользуемся RDG Packer Detector на усиленном методе сканирования:

Снимаем 2 слоя PeStubOEP

Отсюда мы видим, что был применен PeStubOEP и, возможно, aspack, прямо в точку.

Так же можно было бы открыть в любом 16-ом редакторе и увидеть:

Снимаем 2 слоя PeStubOEP


Нахождение OEP пакера:

Откроем SignMan.exe в OllyDBG. Вот что мы видим:

 00401DB4 >/$  60            PUSHAD ; мы тут
 00401DB5  |.  68 01504000   PUSH SignMan.00405001
 00401DBA  |.  E8 01000000   CALL SignMan.00401DC0
 00401DBF  \.  C3            RETN
 00401DC0   $  C3            RETN ; дальше идут мусорные байты
 

Как мы видим в стек кладется 00405001(OEP пакера), мы вызываем 00401DC0, выходим из оттуда и при помощи ret по адресу 00401DBF прыгаем на OEP пакера.

Т.е. мы поставим на 00401DBF бряк(F2), нажмем F9, затем F8. Все, мы на OEP пакера, т.е. aspack.


Нахождение краденыx байт:

Если бы не был применен PeStubOEP, то мы бы искали OEP, но щас aspack будет прыгать не на OEP проги, а на краденые байты.

Искать OEP мы будем моим методом. Нажмем ctrl+b и наберем 61 75:

Снимаем 2 слоя PeStubOEP

и нажмем OK. Вот где мы:

 004053AF    61              POPAD ; мы тут
 004053B0    75 08           JNZ SHORT 004053BA
 004053B2    B8 01000000     MOV EAX,1
 004053B7    C2 0C00         RET 0C
 004053BA    68 00000000     PUSH 0
 004053BF    C3              RET ; прыжок на OEP
 

Поставим бряк(F2) на 004053BF и нажмем F9, затем F8. Все, мы попали на краденые байты.


Нахождение OEP проги и восстановка краденых байт:

Мы ща на краденных байтах:

 00404000    40              INC EAX ; мусор
 00404001    48              DEC EAX ; мусор
 00404002    55              PUSH EBP ; сперто
 00404003    40              INC EAX ; мусор
 00404004    48              DEC EAX ; мусор
 00404005    8BEC            MOV EBP,ESP ; сперсто
 00404007    40              INC EAX ; мусор
 00404008    48              DEC EAX ; мусор
 00404009    6A FF           PUSH -1 ; сперто
 0040400B    60              PUSHAD
 0040400C    33C0            XOR EAX,EAX
 0040400E    B8 FB1F4000     MOV EAX,00401FFB
 00404013    FFE0            JMP EAX ; прыжок на OEP
 00404015    C3              RET
 00404016    C3              RET
 

Как мы видим каждая команда отделена мусорными байтами 40 48.

Щас мы куда-нибудь запишем все украденные байты:

 55 8B EC 6A FF 

Обычно спераются 4-6 байт, в нашем случае 5.

Поставим бряк на 00404013, нажмем F9, F8. Все мы попали на OEP:

 00401FFB   .  40            INC EAX  ;  мы тут, это мусор
 00401FFC   .  48            DEC EAX  ; мусор
 00401FFD   .  40            INC EAX ; мусор
 00401FFE   .  48            DEC EAX ; мусор
 00401FFF   .  61            POPAD ; восстановка всех регистров, мусор
 00402000   .  68 20124000   PUSH 00401220
 00402005   .  68 D01F4000   PUSH 00401FD0
 0040200A   .  64:A1 0000000>MOV EAX,DWORD PTR FS:[0]
 00402010   .  50            PUSH EAX
 00402011   .  64:8925 00000>MOV DWORD PTR FS:[0],ESP
 00402018   .  83EC 68       SUB ESP,68
 0040201B   .  53            PUSH EBX
 0040201C   .  56            PUSH ESI
 0040201D   .  57            PUSH EDI
 

Щас мы будем заменять мусорные байт на настоящие, т.е. 40 48 40 48 61 на 55 8B EC 6A FF. Для этого выделим первые 5 строк и нажмем на правую кнопку мыши -> binary -> edit или ctrl+e

Снимаем 2 слоя PeStubOEP

и введем

 55 8B EC 6A FF 

Снимаем 2 слоя PeStubOEP

и нажмем OK. Все, теперь сдампим прогу при помощи плагина OllyDump, например, под именем SignMan_unpacked.

Все, мы распаковали программу, если ее запустить, то она будет работать. Также мы можем воспользоваться плагином для Rebuild PE, чтобы уменьшить размер.





Скачать статью "Распаковка PeStubOEP - двухслойная защита" в авторском оформление + файлы.



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


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