Re[4]: Процесс, пославший TerminateProcess.
От: xmen  
Дата: 09.12.08 16:11
Оценка: +1
На рисунке показан taskmgr. При попытке завершить процесс выдалось сообщение о том, что процесс PID: 1680 (taskmgr.exe) пытается завершить процесс с PID: 4 (System.exe).



Об устройстве Dll:

* Загружается Dll в адресное пространство процессов с помощью ключа реестра:
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs = C:\HookTermProc.dll

* Перехват осуществляется путем замены первых 5 байт (SetHook()) перехватываемой функции своими, для вызова реальной функции нужно установить обратно замененные байты (UnHook()), а после вызова — снова установить перехват (SetHook())

* Нужно получить Pid «убиваемого» процесса зная hProcess, но hProcess открыт с правами PROCESS_TERMINATE. И при попытке получить Pid с помощью функции GetProcessId(hProcess) – получим ошибку ERROR_ACCESS_DENIED. Поэтому используем функцию DuplicateHandle(*, hProcess, *, &hProcess1, PROCESS_QUERY_INFORMATION, *, *) теперь GetProcessId(hProcess1) выполняется успешно

http://files.rsdn.ru/59750/HTP.rar
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.