2016-09-01 2 views
-3

Моя идея: создать всплывающее окно для каждого нового процесса, который будет создан, поэтому я могу быть уверен, что есть только процессы с моего разрешения.Для каждого CreateProcess сначала вызовите мою функцию

Вопрос в том, как я связываю свою функцию, прежде чем Windows создаст новый процесс.

Я пробовал некоторые инъекции dll, но он не работает.

У кого-нибудь есть решение этой проблемы или это даже невозможно?

Спасибо!

+0

http://www.codeproject.com/Articles/44326/MinHook-The-Minimalistic-xx-API-Hooking-Libra попробуйте это –

+0

Возможный дубликат [Как я могу подключить функции Windows в C/C++] (http : //stackoverflow.com/questions/873658) –

ответ

3

Удовлетворительный способ сделать это - создать драйвер ядра, который использует PsSetCreate|ProcessNotifyRoutineEx (поддерживается в Vista SP1 и более поздних версиях) для управления процессом создания (и завершения). Эта процедура позволяет вам зарегистрировать функцию обратного вызова, которая вызывается, когда либо процесс создается, либо завершается. В случае создания ваш обратный вызов может решить заблокировать процесс. Обработчик получает следующую информацию о новом процессе:

1) имя файла изображения,

2) аргументы командной строки,

3) PID,

4) PID своего родителя,

5) TID: PID процесса создания и потока.

Если вы не хотите разрабатывать драйвер ядра, вы можете приблизительное решение. AFAIK WMI может уведомить вас о том, что новый процесс только что был создан. Когда вы получите уведомление, вы можете приостановить процесс и попросить пользователя об этом (или сделать все, что пожелаете).

Смежные вопросы