Код (Text): mov eax,pid mov hProcess,eax mov cid.UniqueProcess,eax mov cid.UniqueThread,0 invoke ZwOpenProcess, addr hProcess, 1, addr oa, addr cid .if (eax==STATUS_SUCCESS) invoke ZwTerminateProcess, hProcess, 0 invoke ZwClose, hProcess mov eax,STATUS_SUCCESS ret .endif Этот код завершает процессы корректно, кроме одного единственного процесса. Т.е. этот процесс завершается, но после этого система уходит в ребут Все ли необходимые действия по завершению процесса в коде присутствуют, или нужно выполнять ещё какие-то действия, кроме ZwOpenProcess, ZwTerminateProcess, ZwClose ? В частности, если к процессу была подгружена dll с хуком, надо ли отгрузить её перед закрытием процесса, а если надо, то как это сделать? Спасибо.
Не csrss.exe случайно? Корректно завершить ЛЮБОЙ процесс невозможно потому, что без некоторых процессов винда жить не может.
Нет, это не csrss.exe. Это вообще не системный процесс. Обычный пользовательский, правда скрытый. Я его нахожу и завершаю, а предотвратить перезагрузку не получается.
Любой обычный процесс твой код должен завершать корректно, но в данном случае это значит, что в системе сидит что-то контролирующее целостность этого процесса (например драйвер).
Похоже, это сам скрытый процесс некорректно себя ведёт: даже если его не закрывать и ничего ему не вешать (хук и т.п.), то после его запуска попытка запустить например RadAsm или справку msdn вызывают перезагрузку с ошибкой PAGE_FAULT_IN_NONPAGE_AREA (уже поплатился испорченным radasm.ini, пришлось заново настраивать иде) Попробую закачать filemon и посмотреть им на создание файлов, хотя явно ничего не создается.
cresta гыгы... а ты случаем не svchost или smss завершаешь ??? ну дак чево ты удивляешься, есессено тока ребут, =))))))))
cresta это тот phantom, что на Steath 4? И который выдаёт при завершении синий экран с сообщением о ошибке в ntoskrnl.exe? Так он корректно завершается очень редко... И всё равно через некоторое время выдаст синий экран