Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Как перехватить вызов API-функций

Ответить
Настройки темы
Как перехватить вызов API-функций
Chipa


Сообщения: n/a

Профиль | Цитировать


Может кто знает как перехватывать
вызовы API-функций?

Отправлено: 16:22, 21-08-2002

 

Новый участник


Сообщения: 24
Благодарности: 0

Профиль | Отправить PM | Цитировать


Как вариант -- подмена dll в которой содержится функция для перехвата. В двух словах это выглядит так. Находишь длл в которой лежит нужная функция, переименовываешь ее. Создаешь свою длл в которой есть все функции из оригинала (заголовки их) и в каждой из функций делаешь определенные действия (которые тебе необходимы) и в конце вызываешь (можешь и не вызывать но система ляжет) оригинал. Способ этот крайне не надежный и под разными системами может не всегда работать корректно.

Отправлено: 07:49, 23-08-2002 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Модер


Сообщения: 1716
Благодарности: 17

Профиль | Сайт | Отправить PM | Цитировать


Chipa
найти и прочитать Рихтера.
способов более чем много, в зависимости от конкретной ситуации.

Пример.
Если я пишу для Windows, то только для NT.
Потому делаю так (в  своей проге).
Ищу адрес функции для перехвата, сохраняю его.
Потом выполняю ZwProtectVirtualMemory (аналог Win32 не помню, что-то типа ProtectMemory) и ставлю на то место атрибут чтения-записи-выполнения.
Там меняю первые байты таким образом, чтобы это выглядело как переход на мой адрес, то есть на мою прогу, обычный jump туда пишу короче.

Вот так.

-------
Васкецов Сергей
http://registry.oszone.net


Отправлено: 13:50, 23-08-2002 | #3

Chipa


Сообщения: n/a

Профиль | Цитировать


Я наверное нет так спросил, мне нужно только отследить
вызов API.
А вообще идея такая:
хочу написать прогу чтоб отслеживать обращение к заданной
папке. В Win2k есть возможность аудита но там один только вход в интерисующую папку вызывает полтора экрана сообщений в журнале, т.е. работаь не реально.


Добавлено:

vasketsov
Привет.
Я чтото слышал про этого автора, ты имеешь в виду "Windows2000 для проффесионалов"?

И ещё такой вопрос:
я ZwProtectVirtualMemory в MSDN не нашоёл.
если можно в двух словах что она делает?

Отправлено: 14:08, 23-08-2002 | #4


Модер


Сообщения: 1716
Благодарности: 17

Профиль | Сайт | Отправить PM | Цитировать


Chipa
тогда идешь на www.sysinternals.com и качаешь оттуда FileMon с исходниками. Как раз самое то.

В MSDN написаной мной функции нет, ищи что-то типа ProtectMemory.

-------
Васкецов Сергей
http://registry.oszone.net


Отправлено: 16:00, 23-08-2002 | #5

vita


Сообщения: n/a

Профиль | Цитировать


Помогите 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.

Отправлено: 13:20, 24-10-2002 | #6


Модер


Сообщения: 1716
Благодарности: 17

Профиль | Сайт | Отправить PM | Цитировать


vita
Через FindWindow найди это окно и прибей его.

-------
Васкецов Сергей
http://registry.oszone.net


Отправлено: 15:34, 24-10-2002 | #7

Gas Gas вне форума

Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


Подскажите, кто может! С помощью какой API-функции можно получать и (или) задавать знак-разделитель в десятичных числах, т.е. "." или ","?

-------
Мышь- это не роскошь, а средство передвижения курсора.


Отправлено: 11:21, 11-11-2002 | #8


Аватара для Guest

Guest


Профиль | Цитировать


Я тут про функцию ZwProtectVirtualMemory (или ProtectMemory) прочитал.... Где можно найти описание? Мне надо на область памяти что-то аля хук повесить. Чтоб когда винда туда что записать захочет - сразу jmp на мой код. И вот еще вопрос. Как до памяти HDC докопаться, чтоб оттуда байты брать напрямую! (Именно на эту память и хук нужен) И напоследок... Открываю я несколько приложений на отдельных Window Station/Desktop. Как сделать аля PrintScreen этого виртуального дисплея?

Отправлено: 19:04, 01-03-2003 | #9


Модер


Сообщения: 1716
Благодарности: 17

Профиль | Сайт | Отправить PM | Цитировать


Guest
ProtectMemory - в MSDN.
ZwProtectVirtualMemory - у меня на zw.nightmail.ru есть.

Хук на область памяти программно очень сложно сделать, лучше забудь.

До памяти HDC докопаться несложно, только что ты имеешь в виду? На NT-системах DeviceContext определяет 2 области памяти, одна в User-пространстве (до нее несложно), другая - в ВАП (Вирт. Адр. Пр-ве) ядра, до нее из программы добраться сложнее. А оно вообще нафига надо-то? Байты брать напрямую - это интересно, но известен ли тебе формат структур данных для DeviceContext?

-------
Васкецов Сергей
http://registry.oszone.net


Отправлено: 17:33, 02-03-2003 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Как перехватить вызов API-функций

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Log/Monitoring - Как перехватить и заменить данные в сети? dened dened Сетевые технологии 7 10-12-2009 18:01
Перехват API функций ники Лечение систем от вредоносных программ 23 09-04-2009 11:21
[решено] как перехватить клик мышки? proxy AutoIt 7 21-03-2009 11:13
Как возможно перехватить задание, посланое на принтер и записать его в файл? babki Microsoft Windows NT/2000/2003 7 27-06-2005 18:02




 
Переход