Перехватываю NtCreateProcessEx патчингом SDT. функция обработчик выглядит примерно следующим образом: Код (Text): NTSTATUS NewNtCreateProcessEx (...){ ANSI_STRING ansiStr; char str[100]; PUNICODE_STRING puname; NTSTATUS stat; ... if ((PULONG)ObjectAttributes > MmUserProbeAddress) return STATUS_INVALID_PARAMETER; __try { puname = ObjectAttributes->ObjectName; } __except(EXCEPTION_EXECUTE_HANDLER) { DPRINT("Exception"); return STATUS_INVALID_PARAMETER; } ... return TrueNtCreateProcessEx(...); } Вопрос: Почему не получается получить ObjectName? Всегда вылетает exception. Похожий код работает при перехвате OpenProcess(код из статьи Ms-Rem'а). Там ClientId->UniqueProcess успешно достается, а здесь...
В статье Gloomy "Дизасемблирование CreateProcess" было написано,что ObjectAtributes заполняется задолго да вызова NtCreateProcess, по моему еще в Ring3. Т.е. при ee (NtCreateProcess) перехвате через SDT эта структура уже должна быть заполнена. Или я не прав? И если не прав, то как перехватить NtCreateProcess и получить имя создаваемого процесса(имя exe файла)?