Перехват вызовов API
Спасибо.
Вообще-то если вы смотрели формат PE (Portable Executable) win32-exeшников (и dll)то навеное обратили
внимание на секцию экспорта функций. Так вот
в этой секции хранятся все RVA адреса, хинты,
и ординалы к экспортируемым функциям, то бишь
все API функции хранятся в *.dll которые находятся в системном каталоге винды.
Если интересно могу свою прогу кинуть которая
выдает все внутренности PE-exe, dll - файлов
Могу еще дать доку и пример как выдрать
нужные адреса из памяти (загруженного образа PE).
С уважением ко всем программерам Acid JAM
mailto [EMAIL]jamk@mail.ru[/EMAIL]
советую купить книгу Рихтера про Win32, там есть все что тебе нужно и даже больше.
Цитата:
On 2001-10-20 1824, Anonymous wrote
Люди, подскажите кто-нть, как перехватывать вызовы функций API, например, так как это делает SoftIce.
Спасибо.
Щаз сам этим занимаюсь, напишу - пришлю прогу...
Можно подпатчить обработчик ВинАпи функции. Хотя конечно не как СофтАйс ))
как системный процесс и владеет регистрами
DR0-DR7 которые доступны только в PM и только
системным программам - это и есть отладочные регистры, там устанавливаются точки останова
(до 4 точек). Вот
А если статически перехватить - то да надо
как я уже писал - знать формат PE файлов и
переправить таблицу экспорта функций.
И все
Best regardz from JAM
Со статическим перехватом - понятно. У Рихтера, по-моему, как раз про это и написано. А вот как запуститься как системный процесс и работать с отладочными регистрами, как написано у AcidJam'a?
какой смысл переправлять таблицу экспротов .. когда все работающие в данный момент программы будут пользовацца старыми адресами апи-функции .. лучше менять сами обработчики а таблицу экспортов оставить в покое... хотя здесь есть свои технические проблемы скажем восстановление кода после своей обработки процедуры ..
Насколько я слышал, области памяти, в которых лежат функции kernel`a, user`a и gdi, защищены от изменения, и исправлять их просто так невозможно. Так как же тогда изменить обработчики этих функций?
понятное дело предварительно перейдя в нулевое кольцо каким-нить из известных на данный момент способов 8-))
А ссылочку нельзя, где про эти способы почитать можно было бы?
Цитата:
On 2002-01-12 0912, Anonymous wrote
А ссылочку нельзя, где про эти способы почитать можно было бы?
sbvc.cjb.net
у IczeLion (или IceZeLion) есть tutorial по написанию VxD драйверов, лежит на их сайте
Причина: я не мог прилинковать к декомпиленой проге стандартные библиотеки не переделывая текста. Пришлось делать свой стартовый модуль, который вручную модифицировал память с адресами, а потом вызывал основной текст.