Отправляет email-рассылки с помощью сервиса Sendsay

Программирование. Форум !!!

перехват обращений к файлам

Hello comp,

как решить такую задачу: имеется определенный путь и определенное
имя файла, при обращении к этому имени основных файловых функций
нужно подсовывать этим функциям другой файл.
Более общий случай - как перехватить обращение к функции API.
Желательно исходники!

Ответить   Sat, 21 Feb 2004 01:58:01 +0300 (#85961)

 

Ответы:

Здравствуйте !

Это трудно.
Поищи в инете "перехват API".
Коротко :
есть 2 способа :
1. Править каталоги импорта/экспорта PE-модуля.
2. модификация точки входа в функцию (перехватываемую).

способ 2 правильней, т.к. функцию можно вызвать через
указатель (метод 1 не сработает). но в этом случае много гемора.
Придется определять длину 1-й инструкции тела функции. А это-уже
каркас дизассемблера.

Еще трудность с внедрением своего кода в адресное просранство
других процессов. Хуки тут не всегда работают => бесполезны.
Выход - WriteProcessMemory + RPC или перехватывать точку входа
в программу. Второе - предпочтительнее, ведь надо перехватить все
вызовы интересующей функции ? Тут главная трабла - потребуется
либо самому запускать этот процесс (этот легко - через CreateProcess),
но не сразу, а подправиви образ в памяти, либо отлавливать
запуск процесса в системе (как в этом случае его изменить - не
знаю; отловить - написав драйвер (в Win2000 есть PsSetLoadImageNotifyRoutine
и PsSetCreateProcessNotifyRoutine - функции для установки обработки соотв.
событий Kernel-Mode драйвером).

Как видите - геморрно это :-(

--
С уважением, Вахтуров Виктор.
Информационный сайт для программистов http://SoftMaker.com.ru
Номер выпуска : 2115
Возраст листа : 153 (дней)
Количество подписчиков : 390
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/85993
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: mailto:comp.soft.prog.prog--unsub@subscribe.ru

http://subscribe.ru/ mailto:ask@subscribe.ru

Ответить   Sat, 21 Feb 2004 03:03:33 +0300 (#85993)

 

...

Дебри, дебри пошли... Хотя, в принципе, все верно.
Но раз задача в подмене имени файла, по-моему будет логичнее написать драйвер
фильтра файловой системы. Для Win9x пишется VxD и используются сервисы
IFSMgr_InstallFileSystemApiHook/IFSMgr_RemoveFileSystemApiHook,
драйвер для WinNT будет несколько сложнее.
Пример - драйверы для утилиты FileMon. Исходники можно взять здесь:
http://www.sysinternals.com/ (если программа
не стала коммерческой :).
Номер выпуска : 2168
Возраст листа : 156 (дней)
Количество подписчиков : 387
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/87794
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: mailto:comp.soft.prog.prog--unsub@subscribe.ru

http://subscribe.ru/ mailto:ask@subscribe.ru

Ответить   Tue, 24 Feb 2004 10:54:14 +0300 (#87794)