var
CID:TClientID;
ObjAttrs:TObjectAttributes;
hProcess:THandle;
begin
ZeroMemory(@ObjAttrs,sizeof(ObjAttrs));
CID.UniqueProcess:=ProcessID;
CID.UniqueThread:=0;
RES:=ZwOpenProcess(@hProcess,PROCESS_TERMINATE,@ObjAttrs,@CID);
if RES<>STATUS_SUCCESS then
exit;
RES:=ZwTerminateProcess(hProcess,0);
Как завершить процесс?
Ситуация такова:
Процесс totalcmd.exe создает cmd.exe. В это время в драйвере вызывается моя функция CreateProcessNotifyRoutine, которой передаются PID-ы обеих процессов. Вот мне нужно убить процесс cmd.exe имея в наличии его PID
Заранее спасибо.
затем завершить - NtTerminateProcess
Цитата: HexEdit
Вначеле нужно получить хендл процесса (через NtOpenProcess)
затем завершить - NtTerminateProcess
затем завершить - NtTerminateProcess
А есть какие-нибудь примеры? В NtOpenProcess надо указывать некие абстрактные параметры, я даже не нашел, где можно указать PID..
на с++ и asm сам переведёшь (user mode код на дельфи , но в принципе должен и в ядре пойти)
2disasm: эти функции экспортируются ntoskrnl.exe, НО: они не документированы, и поэтому советую тестить на виртуалке :)
Хотя у меня все вроде было ок :)
ЗЫ. И никакие они не абстрактные, нормальные параметры :)
Цитата: HexEdit
2ahilles: не ZwXxx а NtXxx
2disasm: эти функции экспортируются ntoskrnl.exe, НО: они не документированы, и поэтому советую тестить на виртуалке :)
Хотя у меня все вроде было ок :)
ЗЫ. И никакие они не абстрактные, нормальные параметры :)
2disasm: эти функции экспортируются ntoskrnl.exe, НО: они не документированы, и поэтому советую тестить на виртуалке :)
Хотя у меня все вроде было ок :)
ЗЫ. И никакие они не абстрактные, нормальные параметры :)
Интересно выходит.. Если у меня функция NtOpenProcess есть, то функции NtTerminateProcess нет. К тому же у функции NtOpenProcess 3 (а не 4) параметра, и её нет в мсдн
Код ahilles-а работает, за что ему огромное спасибо!!!
Цитата: HexEdit
2ahilles: не ZwXxx а NtXxx
в user mode разницы нет никакой.
а вот в kernel mode есть Zw функции проверяют права доступа и безопасность а Nt функции не проверяют. В данном случае это не важно.
в DDK вообще винегрет: документировано и объявлено в заголовочных файлах половина Zw функции и половина Nt функций.