| Сейчас на форуме: user99, _MBK_, ManHunter, Magister Yoda, rtsgreg1989 (+9 невидимых) |
| eXeL@B —› Основной форум —› Obsidium. |
| Посл.ответ | Сообщение |
|
|
Создано: 17 октября 2005 21:08 · Поправил: Devil · Личное сообщение · #1 Вечер... э-э-э Ночь добрая У меня вопрос по распаковке Obsidium(тот, который на сайте этом лежит). Добрался я за 4 часа до точки входа. Восстановил "спёртые" байты. Осталась IAT. Вообщем попробовал я запустить программу, а она вылетела. Но, сначала, отрисовала главное окно, весь текст, AccelerateTable и несколько раз DispachMessage даже вызвала в цикле сообщений и т.д., а потом накрылась без ошибки. Установил, что перед выходом (ну, почти), после кучи разных функций самой программы вызывается CheckRemoteDebuggerPresent(её точно не должно быть в программе - 100%), я, конечно, подправил результат, но это не дало никакого эффекта. Далее он вызвал DebugBreak и сразу на VirtualFree ==> ExitProcess. Мысль такая: он подменил адрес из IAT на свою функцию, которая во время работы программы вызывается, а если всё ОК, то вызывает реальную функцию. Но там ведь КУЧА "НОРМАЛЬНЫХ" ФУНКЦИИЙ в IAT(точнее, переходников)! Куда можно покопать, чтобы выявить защитный механизм(т.е. в какую функцию он "запихан")? Замена переходника на реальный адрес АПИ успешно проходит. Но в ручную копать все функции большой лом. Спасибо.
![]() |
|
|
Создано: 18 октября 2005 06:03 · Личное сообщение · #2 |
|
|
Создано: 20 октября 2005 21:16 · Личное сообщение · #3 |
|
|
Создано: 21 октября 2005 06:16 · Личное сообщение · #4 |
| eXeL@B —› Основной форум —› Obsidium. |

У меня вопрос по распаковке Obsidium(тот, который на сайте этом лежит). Добрался я за 4 часа до точки входа. Восстановил "спёртые" байты. Осталась IAT. Вообщем попробовал я запустить программу, а она вылетела. Но, сначала, отрисовала главное окно, весь текст, AccelerateTable и несколько раз DispachMessage даже вызвала в цикле сообщений и т.д., а потом накрылась без ошибки. Установил, что перед выходом (ну, почти), после кучи разных функций самой программы вызывается CheckRemoteDebuggerPresent(её точно не должно быть в программе - 100%), я, конечно, подправил результат, но это не дало никакого эффекта. Далее он вызвал DebugBreak и сразу на VirtualFree ==> ExitProcess. Мысль такая: он подменил адрес из IAT на свою функцию, которая во время работы программы вызывается, а если всё ОК, то вызывает реальную функцию. Но там ведь КУЧА "НОРМАЛЬНЫХ" ФУНКЦИИЙ в IAT(точнее, переходников)! Куда можно покопать, чтобы выявить защитный механизм(т.е. в какую функцию он "запихан")? Замена переходника на реальный адрес АПИ успешно проходит. Но в ручную копать все функции большой лом. Спасибо.



Для печати