Показать полную графическую версию : Как перехватить вызов API-функций
Может кто знает как перехватывать
вызовы API-функций?
Maniacosaur
23-08-2002, 07:49
Как вариант -- подмена dll в которой содержится функция для перехвата. В двух словах это выглядит так. Находишь длл в которой лежит нужная функция, переименовываешь ее. Создаешь свою длл в которой есть все функции из оригинала (заголовки их) и в каждой из функций делаешь определенные действия (которые тебе необходимы) и в конце вызываешь (можешь и не вызывать но система ляжет) оригинал. Способ этот крайне не надежный и под разными системами может не всегда работать корректно.
vasketsov
23-08-2002, 13:50
Chipa
найти и прочитать Рихтера.
способов более чем много, в зависимости от конкретной ситуации.
Пример.
Если я пишу для Windows, то только для NT.
Потому делаю так (в своей проге).
Ищу адрес функции для перехвата, сохраняю его.
Потом выполняю ZwProtectVirtualMemory (аналог Win32 не помню, что-то типа ProtectMemory) и ставлю на то место атрибут чтения-записи-выполнения.
Там меняю первые байты таким образом, чтобы это выглядело как переход на мой адрес, то есть на мою прогу, обычный jump туда пишу короче.
Вот так.
Я наверное нет так спросил, мне нужно только отследить
вызов API.
А вообще идея такая:
хочу написать прогу чтоб отслеживать обращение к заданной
папке. В Win2k есть возможность аудита но там один только вход в интерисующую папку вызывает полтора экрана сообщений в журнале, т.е. работаь не реально.
Добавлено:
vasketsov
Привет.
Я чтото слышал про этого автора, ты имеешь в виду "Windows2000 для проффесионалов"?
И ещё такой вопрос:
я ZwProtectVirtualMemory в MSDN не нашоёл.
если можно в двух словах что она делает?
vasketsov
23-08-2002, 16:00
Chipa
тогда идешь на www.sysinternals.com и качаешь оттуда FileMon с исходниками. Как раз самое то.
В MSDN написаной мной функции нет, ищи что-то типа ProtectMemory.
Помогите plz.
Windows media player 7/7.1 дает мне сообщение:
"Windows Media Player Error"
"Unable to locate media server.
The operation timed out"
Нужно только перехватить это сообщение,
а закрыть эго и обратно коннектиться я могу.
Я нуждаюсь в совете (C/C++ Builder,Delphi,Java).
Thx!
Vita.:(
vasketsov
24-10-2002, 15:34
vita
Через FindWindow найди это окно и прибей его.
Подскажите, кто может! С помощью какой API-функции можно получать и (или) задавать знак-разделитель в десятичных числах, т.е. "." или ","?
Я тут про функцию ZwProtectVirtualMemory (или ProtectMemory) прочитал.... Где можно найти описание? Мне надо на область памяти что-то аля хук повесить. Чтоб когда винда туда что записать захочет - сразу jmp на мой код. И вот еще вопрос. Как до памяти HDC докопаться, чтоб оттуда байты брать напрямую! (Именно на эту память и хук нужен) И напоследок... Открываю я несколько приложений на отдельных Window Station/Desktop. Как сделать аля PrintScreen этого виртуального дисплея?
vasketsov
02-03-2003, 17:33
Guest
ProtectMemory - в MSDN.
ZwProtectVirtualMemory - у меня на zw.nightmail.ru есть.
Хук на область памяти программно очень сложно сделать, лучше забудь.
До памяти HDC докопаться несложно, только что ты имеешь в виду? На NT-системах DeviceContext определяет 2 области памяти, одна в User-пространстве (до нее несложно), другая - в ВАП (Вирт. Адр. Пр-ве) ядра, до нее из программы добраться сложнее. А оно вообще нафига надо-то? Байты брать напрямую - это интересно, но известен ли тебе формат структур данных для DeviceContext?
Ну мысля такая. Есть окошко. Стоит задача получить те пиксели, которые в нем изменились. Для этого можно взять битмап и сравнить по пикселям. Но это долго, если делать раз 50 в секунду. Интересно, как терминал виндовый (или Citrix) это делает? Формат данных мне известен. Для обеих структур(User и Kernel). А то очень приятно поставить на область Kernel(пиксели по-моему там хранятся) read access и ловить исключения. Есть у кого-нибудь идеи?
vasketsov
03-03-2003, 22:08
Guest
Раз так все просто - пиши драйвер и правь атрибут защиты у страницы, где проблемы-то? В DDK вроде это даже описано было.
Я драйвер написать могу. Тока вот не могу найти КАК это сделать. Ну так знает кто-нибудь, как работает Citrix?
HelloWorld
17-03-2003, 20:02
Хмм.... вот решил зарегистрироваться. Так никто не подскажет, как реализовать хук на память из драйвера ядра?
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC