Убийство обычного процесса из ядра

Тема в разделе "WASM.BEGINNERS", создана пользователем rpy3uH, 14 сен 2006.

  1. rpy3uH

    rpy3uH New Member

    Публикаций:
    0
    Регистрация:
    14 сен 2006
    Сообщения:
    503
    Парни вообще возможно ли убить процесс из ядра
    через ntopenprocess и ntterminateprocess
    я просто засомневался после того как делал драйвер который убивает процесс из ядра
    id пробовал передавать через саму функцию deviceiocontrol и через файл всё равно без толку
    (драйвер я писал на с++ DDK)
    если это возможно то может кто нибудь проверенный кусок кода приведёт на с++ или асме.
     
  2. MegaZu

    MegaZu New Member

    Публикаций:
    0
    Регистрация:
    22 июл 2005
    Сообщения:
    290
    Ты лучше покажы свой сурс, а мы уже поможем.

    ЗЫ. Поиск по форуму, таких тем было туча.
     
  3. rpy3uH

    rpy3uH New Member

    Публикаций:
    0
    Регистрация:
    14 сен 2006
    Сообщения:
    503
    короче всё выглядит вот так (код С++)

    Код (Text):
    1.         case  IOCTL_KILL_PROCESS :
    2.         //if (InpBuffSize = 4) 
    3.           {
    4.               // memcpy(&ProcessIDForKill,pBuff,InpBuffSize);//если передавать ID через саму функцию
    5.  
    6.                                        // если передавать ID через файл
    7.                RtlInitUnicodeString(&UFILE_NAME,(PWSTR)"C:\\BE84E84F62CE46D48490A31C26DC59DE.dat");
    8.                InitializeObjectAttributes(&FILE_OA,&UFILE_NAME,OBJ_CASE_INSENSITIVE + OBJ_KERNEL_HANDLE,NULL,NULL);
    9.                ZwOpenFile(&PidFile,FILE_READ_DATA + SYNCHRONIZE,&FILE_OA,&iosb,
    10.                    FILE_SHARE_READ + FILE_SHARE_WRITE + FILE_SHARE_DELETE,FILE_SYNCHRONOUS_IO_NONALERT);
    11.                ZwReadFile(PidFile,0,NULL,NULL,&iosb,&ProcessIDForKill,4,0,NULL);
    12.                ZwClose(PidFile);
    13.  
    14.            
    15.                ns = KillProcessFromKernel(ProcessIDForKill);
    16.                Irp->IoStatus.Information = 0;
    17.               // ns = STATUS_SUCCESS
    18.           }              
    19.          break;
    ......

    Код (Text):
    1. NTSTATUS KillProcessFromKernel(ULONG ProcessID)
    2. {
    3.     OBJECT_ATTRIBUTES OA={sizeof(OBJECT_ATTRIBUTES)};
    4.     CLIENT_ID CID = {0,0};   
    5.     NTSTATUS RES;
    6.     HANDLE hProcess = 0;
    7.    
    8.      //memset(&OA,0,sizeof(OA));//??????????
    9.      CID.UniqueProcess = (HANDLE)ProcessID;
    10.      //CID.UniqueProcess = (HANDLE)1424;
    11.      CID.UniqueThread  = 0;      
    12.      RES = NtOpenProcess(&hProcess,PROCESS_ALL_ACCESS,&OA,&CID);
    13.      if (RES != STATUS_SUCCESS)
    14.        {
    15.  
    16.             return RES;
    17.        }
    18.      RES = ZwTerminateProcess(hProcess,0);  
    19.      if (RES != STATUS_SUCCESS)
    20.        {
    21.             return RES;
    22.        }
    23.      RES = ZwClose(hProcess);        
    24.      return RES;