перехват ZwTerminateProcess

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

  1. FromRing0

    FromRing0 New Member

    Публикаций:
    0
    Регистрация:
    10 окт 2006
    Сообщения:
    73
    :dntknw: что делать уже хз
     
  2. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    И что же тут находится? Случаем не 0?
    Перемести это после
    Код (Text):
    1. theName[NT_PROCNAMELEN] = 0;
     
  3. FromRing0

    FromRing0 New Member

    Публикаций:
    0
    Регистрация:
    10 окт 2006
    Сообщения:
    73
    Код (Text):
    1. PEPROCESS GetProcessByHandle(HANDLE hndl){
    2.     // ЛОКАЛЬНЫЕ ПЕРЕМЕННЫЕ ФУНКЦИИ
    3.     PVOID                    NZTP_OBJ1,NZTP_OBJ2 = NULL;
    4.     ObReferenceObjectByHandle(hndl,0,0,KernelMode,&NZTP_OBJ1,NULL);
    5.     NZTP_OBJ2 = NZTP_OBJ1;
    6.     ObDereferenceObject(&NZTP_OBJ1);
    7.     return NZTP_OBJ2;
    8. }
    Так падёт ? :)
     
  4. FromRing0

    FromRing0 New Member

    Публикаций:
    0
    Регистрация:
    10 окт 2006
    Сообщения:
    73
    Всё равно синий экран вылазиет KMODE_EXCEPTION_NOT_HANDLED (1e)
     
  5. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    нет
    Код (Text):
    1. PEPROCESS GetProcessByHandle(HANDLE hndl){
    2.     // ЛОКАЛЬНЫЕ ПЕРЕМЕННЫЕ ФУНКЦИИ
    3.     PVOID                    NZTP_OBJ;
    4.     ObReferenceObjectByHandle(hndl,0,0,KernelMode,&NZTP_OBJ,NULL);
    5.     return NZTP_OBJ;
    6. }
    7.  
    8. ULONG GetProcessName2000( PCHAR theName , HANDLE hndl )
    9. {
    10.     // ЛОКАЛЬНЫЕ ПЕРЕМЕННЫЕ ФУНКЦИИ
    11.     PEPROCESS            curproc;
    12.     char                *nameptr;
    13.     ULONG               i;
    14.     KIRQL               oldirql;
    15.  
    16.     // ФУНКЦИЯ
    17.   if( gProcessNameOffset )
    18.     {
    19.       curproc = GetProcessByHandle(hndl);                      
    20.       nameptr   = (PCHAR) curproc + gProcessNameOffset;        // Тут не понятно
    21.       strncpy( theName, nameptr, NT_PROCNAMELEN );            // пихаем в nameptr theName ЗАЧЕМ ?
    22.       theName[NT_PROCNAMELEN] = 0;                            // Нуль строка
    23.       ObDereferenceObject(&NZTP_OBJ);
    24.       return TRUE;
    25.     }
    26.   return FALSE;
    27. }
    28.  
    29.  
    30. NTSTATUS NewZwTerminateProcess(IN HANDLE ProcessHandle OPTIONAL,IN NTSTATUS ExitStatus)
    31. {    
    32.     // ЛОКАЛЬНЫЕ ПЕРЕМЕННЫЕ ФУНКЦИИ
    33.     PVOID                    NZTP_OBJ;
    34.     NTSTATUS                 NZTP_STATUS;
    35.     CHAR                     PtheName[PROCNAMELEN];
    36.    
    37.     // Функция
    38.     if (GetProcessName2000( PtheName , ProcessHandle ))
    39.     {
    40.         if (0 == memcmp(PtheName, PROCESS_TO_HIDE, sizeof(PROCESS_TO_HIDE)))
    41.         {
    42.             NZTP_STATUS = STATUS_ACCESS_DENIED;
    43.         }    else    {
    44.             NZTP_STATUS = OldZwTerminateProcess(ProcessHandle, ExitStatus);
    45.         }        
    46.     }
    47.     return NZTP_STATUS;
    48. }
     
  6. FromRing0

    FromRing0 New Member

    Публикаций:
    0
    Регистрация:
    10 окт 2006
    Сообщения:
    73
    да не будет он так пахать, ты пытаешься убить объект которого нету :dntknw:
    error C2065: 'NZTP_OBJ' : undeclared identifier
     
  7. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    очепятка
    ObDereferenceObject(&curproc);
     
  8. FromRing0

    FromRing0 New Member

    Публикаций:
    0
    Регистрация:
    10 окт 2006
    Сообщения:
    73
    такое же..
     
  9. FromRing0

    FromRing0 New Member

    Публикаций:
    0
    Регистрация:
    10 окт 2006
    Сообщения:
    73
    Блин не пашет, синий экран вылазиет :dntknw: