Перехват NtCreateProcessEx через SDT

Discussion in 'WASM.WIN32' started by neocoder, Feb 16, 2006.

  1. neocoder

    neocoder New Member

    Blog Posts:
    0
    Перехватываю NtCreateProcessEx патчингом SDT.

    функция обработчик выглядит примерно следующим образом:
    Code (Text):
    1.  
    2. NTSTATUS NewNtCreateProcessEx
    3. (...){
    4.       ANSI_STRING ansiStr;
    5.     char        str[100];
    6.       PUNICODE_STRING puname;
    7.     NTSTATUS stat;
    8.     ...
    9.     if ((PULONG)ObjectAttributes > MmUserProbeAddress) return STATUS_INVALID_PARAMETER;
    10.    
    11.     __try
    12.     {
    13.             puname = ObjectAttributes->ObjectName;
    14.     }
    15.     __except(EXCEPTION_EXECUTE_HANDLER)
    16.     {
    17.         DPRINT("Exception");
    18.         return STATUS_INVALID_PARAMETER;
    19.       }
    20.       ...
    21.  
    22.       return TrueNtCreateProcessEx(...);
    23.      }
    24.  




    Вопрос: Почему не получается получить ObjectName? Всегда вылетает exception. Похожий код работает при перехвате OpenProcess(код из статьи Ms-Rem'а). Там ClientId->UniqueProcess успешно достается, а здесь...
     
  2. Ms Rem

    Ms Rem New Member

    Blog Posts:
    0


    А потому что нету имени :)
     
  3. neocoder

    neocoder New Member

    Blog Posts:
    0
    В статье Gloomy "Дизасемблирование CreateProcess" было написано,что ObjectAtributes заполняется задолго да вызова NtCreateProcess, по моему еще в Ring3. Т.е. при ee (NtCreateProcess) перехвате через SDT эта структура уже должна быть заполнена. Или я не прав? И если не прав, то как перехватить NtCreateProcess и получить имя создаваемого процесса(имя exe файла)?
     
  4. cresta

    cresta Active Member

    Blog Posts:
    0




    Нету имени, или нету поля ObjectName в структуре ObjectAttributes ?