как установить хук для конкретного приложения перед его запуском - PullRequest
0 голосов
/ 21 февраля 2011

У меня есть две программы: A.exe и B.exe. МОЖЕТ БЫТЬ B.exe вызывает системную функцию (например, void foo ()).

В коде программы A.exe я создаю процесс программы B.exe и жду, пока он закончится. Я хочу, чтобы FORCE B.exe TERMINATE, если он вызывает функцию foo ().

Я знаю, что это возможно реализовать с использованием глобальных хуков, но это не ясно. Глобальные хуки могут влиять на другие рабочие процессы и делать их нестабильными (например, Skype проверяет, не изменились ли системные функции, и вылетает ли, если это не так).

Также я хочу установить хук ДО запуска B.exe. В противном случае будут выполняться потерянные / не кэшированные вызовы foo ().

1 Ответ

1 голос
/ 21 февраля 2011

Вы не можете блокировать вызовы API, используя хуки.Вы можете внедрить библиотеки DLL, которые затем вручную перехватывают вызовы API, обычно изменяя заглушку импорта.Лучшим решением было бы использовать API отладки CreateProcess с DEBUG_PROCESS, а затем цикл WaitForDebugEvent / ContinueDebugEvent.

http://www.codeproject.com/KB/system/writing_debugger_1.aspx прилично охватывает отладчики Windows.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...