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