Re: Как перехватить обращение к файлу
Здравствуйте !
> Hello comp,
>
> Я новичек в программировании под виндовс. Пэтому прошу Вас,
> подскажите, как перехватить обращение программы (консольное
> приложение виндовс) к конкретно заданному текстовому файлу (нужно
> перед чтением этой программы изменить данный текстовый файл).
> Скажите, какие функции виндовс API нужно вызывать, и, если можно,
> примерчик на С (или asm). Программу пишу на ассемблере. Спасибо.
Думал на эту тему...
Похоже, не обойтись без перехвата API - функций (например, CreateFile).
Сам перехват функции - дело сложное. Можно реализоватьего через подмену
адреса в элементе таблиц экспорта загруженного модуля (в адресном
пространстве процесса, за которым) хотите следить. Но это не даст
полной уверенности в результате, поскольку функция может вызываться через
указатель, полученный через GetProcAddress.
С консольным приложением вообще все сложнее. Дело в том, что для перехвата
функции надо внедрить свой код в адресное пространство другого процесса.
Это делается обычно путем загрузки длл с хуком в другой процесс.
Но вся беда в том, что консольные приложения, похоже не имеют очереди
сообщения, а значит, хук бесполезен.
Можно попробовать внедрить код через WriteProcessMemory, а потом
использовать
RPC - удаленный вызов процедур. Но такая схема будет работать только в
WinNT и 2000.
Вообще очень много написано в книге Рихтера "Программирование в Windows
для профессионалов" (кажется так это называется).
Вообще, как видите, довольно сложно.
Но сделать, в принципе можно.
Vic.
-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: http://subscribe.ru/member/unsub?grp=comp.soft.prog.prog&email=
http://subscribe.ru/ mailto:ask@subscribe.ru