Привет! Пытаюсь исправить таблицу импорта в туториале на wasm.ru, который Нарвахо дает в виде упражнения в уроке номер 38 http://wasm.ru/article.php?article=ollydbg38 и столкнулся с тем, что его программа упражнение изменяет трейс OllyDbg. Как это возможно? и второй вопрос: как воспрепятствовать этому вопиющему вмешательству в частную жизнь? Спасибо за внимание, искренне ваш.
Когда в ОllyDbg трейсится программа, то в окне трейс происходит запись команд, которые последовательно выполняются в Оле. И так в хронологическом порядке. Лог самых ранних команд на самом верху окна трейса. После работы программы было замечено, что изучаемая программа имеет возможность изменять лог трейса, т.е. получается, что если на самом верху был лог скажем mov eax, eax, то через некоторое время эта строка была заменена на скажем, xor edi,edi. Отсюда и вопрос, разве возможно, чтобы изучаемая программа изменяла лог трейса OllyDbg. Меня это очень удивило, так как изучаемая программа находится под контролем OllyDbg, и априори не может менять что-то в отладчике( за исключением, наверно вирусов). Программа о которой я говорю находится вот в этом архиве: http://wasm.ru/pub/23/files/ollydbg38.zip. Если нужно, то я могу сказать с какой строки трейсить, но мне кажется это просто.
Вот кстате лог из лодера кстати по теме: Код (Text): ; o Если вызывается теневой сервис(из InitRoutine загружаемых модулей), ; который вызывает калбэки в apfnDispatch, то при возврате в ядро пос ; редством NtCallbackReturn или KiCallbackReturn(Int 0x2B) трап-фрейм ; и в частности TF в регистре флагов восстанавливается в значение, ко ; торое было на момент вызова сервиса. Если при вызове шлюз для возвр ; ата в ядро из калбэка сбросить TF и прекратить трассировку, возникн ; ет трассировочный останов при возврате из сервиса. Это исключение д ; олжно быть обработано. Так как нормально стек теневых калбэков сбал ; ансирован, тоесть число входов в калбэки равно числу возврата из ни ; х, то прекращение трассировки после возврата из теневого сервиса на ; загрузчик безопасно и обработчик исключений может быть удалён. В блоге я описал про шадова калбэки(сохранение трап-фрейма), на кряклабе есть топик про это. На вирустеке про сброс TF посредством загрузки контекста(NtContinue и NtSetContextThread). Также и удаление отладочного порта(NtRemoveProcessDebug) и остальные разные способы. Изучайте инфы достаточно.