Проблема с NtCreateUserProcess
От: BDEsoft  
Дата: 26.03.13 09:12
Оценка:
Всем добрый.
Делаю хук в SSDT на функцию NtCreateUserProcess (win7, win8 x86). Все отрабатывает нормально, получаю имя процесса которое запускается и имя процесса которое запускает.
Далее в программе выдается диалоговое окно с выбором "Запустить" или "Отклонить". При утвердительном ответе процесс запускается нормально. При отказе выдается диалоговое окно "Неизвестная ошибка".

В XP при перехвате функции NtCreateProcessEx при отказе возвращаю NTSTATUS = 0x80070000 (RETURN_ERRO_NOBOX) — и диалоговое окно не появляется.
В семерке и восьмерке же при возврате 0x80070000 (или же любого другого кода) выходит диалоговое окно (с разной ошибкой). Значит функция NtCreateUserProcess должна отработать, но замена пути процесса в параметре ProcessParameters приводит к тому, что функция отрабатывает нормально, но все равно происходит запуск первоначального процесса.
Из стека запуска:

0669e09c 77915784 7630e5d5 0669e3dc 0669e3b8 ntdll!KiIntSystemCall+0x6
0669e0a0 7630e5d5 0669e3dc 0669e3b8 02000000 ntdll!NtCreateUserProcess+0xc
0669e6fc 762c2079 00000000 04e52484 04e01230 kernel32!CreateProcessInternalW+0xe75
0669e734 76a955c1 04e52484 04e01230 00000000 kernel32!CreateProcessW+0x2c
0669e82c 76aa2bda 000100d2 00000000 04e52484 SHELL32!_SHCreateProcess+0x251

Я так понимаю, что виновна функция CreateProcessInternalW, но вот как ее обхитрить не знаю.

Может кто сталкивался? Или же в win7 и win8 нужно делать хук на другую функцию?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.