![]() |
Препарируем DotFix NiceProtect
Исследование DotFix NiceProtect
[Part I] [Intro] Начала эту статью писать еще до отпуска.. Сейчас нарыла в недрах винта и решила ее закончить наконец-то=) Начала писать потому, что материала было этому проту катастрофически мало. Скачала протектор, и начала его препарировать… * Версия, используемая в этой статье – 2.5 – вм не используется, так как триал( [Инструменты] OllyDbg – отладчик LordPe – дампер ImpRec – восстановление импорта CFF Explorer – Pe Editor [Опции] Посмотрим сначала на возможные опции защиты *Protect original entry point ; защита оригинальной точки входа *Encrypt code section ; шифрация кодовой секции *Use anti-tracing ; анти-трассировка *Use anti-debug ; анти-отладка Здесь, думаю, все понятно Также существует два метода защиты *Include SEH frames *Stolen bytes protection Второй случай страшнее и продвинутей, первый – более простая защита. [Исследование] Распаковка на примере Пасьянс ”Паук” из стандартной поставки форточек. Опции защиты – все. 1.Метод защиты – SEH. Интересная функция прота – использование сигнатуры какого-то компилятора или протектора=) Чтобы ввести Peid в замешательство. Например в нашем случае entry point выглядит так Код:
[ Нахождение OEP] Логично использовать тот факт, что все графические приложения используют в своей работе определенный стандартный набор функций. При нахождении OEP в данном случае нам понадобятся две функции GetModuleHandleA и GetVersionExA. Если не срабатывает на этих функциях – попробуйте поставить бряк на юникод-версии этих функций (GetVersionExW и GetModuleHandleW). Поставили бряки. В Olly Dbg Go-to->Expression-> GetModuleHandleA -> брекпоинт на ret, также поступаем с GetVersion. Брекпоинт сработает несколько раз, нужно дождаться момента, когда адрес возврата будет соответствовать нашей запакованной программе. В данной проге функция-ориентир – как раз GetVersion, а не GetModuleHandle. Сначала я пробовала как раз второй вариант, но не получив результатов начала искать альтернативу. Альтернативой оказалась GetVersion. Код:
01008FB2 6A 60 PUSH 60Приступаем ко второму дублю распаковки. Участники те же=) 2.Метод защиты – Stolen Bytes. OEP – находим так же. Только возвращаемся мы в секцию пакера. Код:
015A3FCC . 6A 60 PUSH 60Посмотрим внимательнее ... Код:
015A3FCE . C74424 FC 48160001 MOV DWORD PTR SS:[ESP-4],spider.01001648Код:
015A3FE1 . EB 01 JMP SHORT spider.015A3FE4Код:
015A3FED . 68 00000094 PUSH 94000000Теперь пора заменить эти инструкции на mov edi,94 mov eax,edi Что мы получили теперь push 60 push 01001648 call 0100A170 mov edi,94 mov eax,edi Похоже на oep. будем считать что это oep. Такс… Много байт притырил себе. И мусора намешал, но это мы обошли, проанализировав код Код:
015A3FE9 . EB 01 JMP SHORT spider.015A3FEC[Антиотладка] Отключила все плагины для скрытия отладчика, но на антиотладку мне напороться так и не пришлось. Может, плохо искала? =) [Где скачать] _http://www.niceprotect.com/index.php?p=Download Офф сайт протектора На этом пока все=) |
хех =) не сложнее упх получилось... надо было по выше уровень брать =)
|
эмм... очередной hr [esp-4] ? :)
а где исследование то? Цитата:
|
Цитата:
Если этим же протом,то надо было его исследовать,вот это была бы рульная статья,а так [:]||||||[:] P.S.:ковыряй уж Фемиду или StarForce :p P.P.S.: линки тоже выкладывай в статья на протектор ;) |
Цитата:
Цитата:
Цитата:
Цитата:
|
Цитата:
[qquote]Собой же и написан на vb(!)=)[/quote] Вот с прота и снимай защиту,но блиа VB это сакс |
Цитата:
Цитата:
|
Пасиб за помидорозакидывание и агитацию=) Зато конструктивно=)
Читаем далее. [Part II] [DotFixNiceProtect на примере DotFixNiceProtect]. Как я уже говорила - прот написан на vb (сама была удивлена), а значит использует библиотеку MSVBVM60.dll. Так, VB-проги первым делом вызывают функцию ThunRTMain и код, естессно будет выполняться в этой библиотеке (MSVBVM60.dll). Здесь подход должен быть немного иной, чем в предыдущих случаях (из-за языка, на котором программа написана). Пришло время воспользоваться SEH. Теперь идем в отладчик и включаем остановку на всех эксепшнах (Alt + O и на вкладке Exceptions снимаем все галочки). Ждем последнего эксепта в таком месте (оно идентично во всех запакованных программах) Код:
Код:
0012FBCC 00B1628E DotFix_N.00B1628EОпять вспоминаем как выглядит начало программы на вб. Сначала в стек заталкивается некое число, а потом уже идет вызов стартовой функции. Ищем это число, прокручивая листинг вверх. Вот оно Код:
00B16207 . C74424 FC ACBF4000 MOV DWORD PTR SS:[ESP-4],DotFix_N.0040BFACДампим, открываем импрек и пишем адрес иат - 1000.... Все нашлось. Вводим нашу OEP и склеиваем. Все работает))))))))) [Done] |
Девушка, а вы реверсите хэк защиты, использующие драйвер(а) ?
> шифрация шифровация Great: шифровка |
| Время: 09:32 |