| Сейчас на форуме: 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(точнее, переходников)! Куда можно покопать, чтобы выявить защитный механизм(т.е. в какую функцию он "запихан")? Замена переходника на реальный адрес АПИ успешно проходит. Но в ручную копать все функции большой лом. Спасибо.



 Для печати