Парни вообще возможно ли убить процесс из ядра через ntopenprocess и ntterminateprocess я просто засомневался после того как делал драйвер который убивает процесс из ядра id пробовал передавать через саму функцию deviceiocontrol и через файл всё равно без толку (драйвер я писал на с++ DDK) если это возможно то может кто нибудь проверенный кусок кода приведёт на с++ или асме.
короче всё выглядит вот так (код С++) Код (Text): case IOCTL_KILL_PROCESS : //if (InpBuffSize = 4) { // memcpy(&ProcessIDForKill,pBuff,InpBuffSize);//если передавать ID через саму функцию // если передавать ID через файл RtlInitUnicodeString(&UFILE_NAME,(PWSTR)"C:\\BE84E84F62CE46D48490A31C26DC59DE.dat"); InitializeObjectAttributes(&FILE_OA,&UFILE_NAME,OBJ_CASE_INSENSITIVE + OBJ_KERNEL_HANDLE,NULL,NULL); ZwOpenFile(&PidFile,FILE_READ_DATA + SYNCHRONIZE,&FILE_OA,&iosb, FILE_SHARE_READ + FILE_SHARE_WRITE + FILE_SHARE_DELETE,FILE_SYNCHRONOUS_IO_NONALERT); ZwReadFile(PidFile,0,NULL,NULL,&iosb,&ProcessIDForKill,4,0,NULL); ZwClose(PidFile); ns = KillProcessFromKernel(ProcessIDForKill); Irp->IoStatus.Information = 0; // ns = STATUS_SUCCESS } break; ...... Код (Text): NTSTATUS KillProcessFromKernel(ULONG ProcessID) { OBJECT_ATTRIBUTES OA={sizeof(OBJECT_ATTRIBUTES)}; CLIENT_ID CID = {0,0}; NTSTATUS RES; HANDLE hProcess = 0; //memset(&OA,0,sizeof(OA));//?????????? CID.UniqueProcess = (HANDLE)ProcessID; //CID.UniqueProcess = (HANDLE)1424; CID.UniqueThread = 0; RES = NtOpenProcess(&hProcess,PROCESS_ALL_ACCESS,&OA,&CID); if (RES != STATUS_SUCCESS) { return RES; } RES = ZwTerminateProcess(hProcess,0); if (RES != STATUS_SUCCESS) { return RES; } RES = ZwClose(hProcess); return RES;