![]() |
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]() ![]() ![]() |
|
AugMaster |
|
|||
Новичок Профиль Группа: Участник Сообщений: 49 Регистрация: 3.8.2006 Репутация: нет Всего: 1 |
ситуация такова.
Есть процесс a.exe, который при помощи CreateProcess запускает процесс b.exe(происходит в юзермоде,в XP), получает его хэндл и творит зло. Задача - возвратить процессу a.exe инвалидный хэндл. При перехвате из ядра NtCreateProcessEx можно выставить возвращаемый хэндл=NULL или другое левое значение, но тогда система убивает процесс b.exe . То есть надо перехватывать какую-то более высокую функцию, чтобы система знала,что процесс запущен и все ок, но при этом a.exe получал мусор. Может ли кто-то подсказать,как именно работает CreateProcess и на каком этапе (желательно в ядре) и что именно надо перехватывать, чтобы и процесс запустился,и чтобы запускающий его процесс остался без целевого хэндла Это сообщение отредактировал(а) AugMaster - 7.3.2010, 01:51 |
|||
|
||||
bra1ny |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 26.12.2008 Репутация: 2 Всего: 3 |
для справки.
1. Открытие образа и создание раздела. 2. Создание EPROCESS , KPROCESS , АП процесса , формирование PEB. 3.Создается первичный поток. формирование ETHREAD. 4.csrss уведомляется о новом процессе. 5.запуск первичного потока. 6.Выполнение KiThreadStartup. Не очень детально , на память уже все тонкости не припомню(Руссинович вам поможет). Код перехвата покажите. Это сообщение отредактировал(а) bra1ny - 7.3.2010, 02:05 --------------------
Что вас манит сюдаИз заморзких широт?Там гораздо сытней и красивей.Или воля не та, или воздух не тот -Знать и вам не прожить без России. |
|||
|
||||
AugMaster |
|
|||
Новичок Профиль Группа: Участник Сообщений: 49 Регистрация: 3.8.2006 Репутация: нет Всего: 1 |
код рабочий,бсодов не дает, дебуг-сообщения выводит правильно. Просто если подсовываешь неправильный хэндл - убивает процесс b.exe Это сообщение отредактировал(а) AugMaster - 7.3.2010, 02:18 |
|||
|
||||
AugMaster |
|
|||
Новичок Профиль Группа: Участник Сообщений: 49 Регистрация: 3.8.2006 Репутация: нет Всего: 1 |
почитал Руссиновича, расстроило. Судя по всему, перехват, который я хочу реализовать, в ринг0 неуспех - надо перехватывать CreateProcessW , который является функцией юзермодной kernel32.dll . Полностью код ,вшитый в длл, не разобрал, но в любом случае после NtCreateProcessEx, вызываемой в теле функции CreateProcessInternalW (кажется так), еще идет тысяча и одна инструкция по выделению памяти и т.д., требующие валидный хэндл процесса. Тема закрыта.
Это сообщение отредактировал(а) AugMaster - 7.3.2010, 20:40 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Системное программирование и WinAPI" | |
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |