Вылетает ZwQueryObject

Тема в разделе "WASM.NT.KERNEL", создана пользователем Weberd, 9 сен 2007.

  1. Weberd

    Weberd New Member

    Публикаций:
    0
    Регистрация:
    14 июн 2007
    Сообщения:
    67
    вылезает бсод при DbgPrint. ObjectAttributes->RootDirectory – это handle key реестра, полученный перехватом NtOpenKey. Он правильный, так как ZwQueryKey работает нормально, но не возвращает полного пути до key.

    Код (Text):
    1.         POBJECT_NAME_INFORMATION info;
    2.         ULONG length = 0;
    3.  
    4.         ZwQueryObject(ObjectAttributes->RootDirectory, ObjectNameInformation, NULL, 0, &length);
    5.  
    6.         if (length > 0)
    7.         {
    8.             info = (POBJECT_NAME_INFORMATION) ExAllocatePool(PagedPool, length);
    9.             ZwQueryObject(ObjectAttributes->RootDirectory, ObjectNameInformation, info, length, &length);
    10.             DbgPrint("Additional info: %wZ", info->Name);
    11.         }
     
  2. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    так при DbgPrint или все-таки при ZwQueryObject перед ним?
     
  3. Weberd

    Weberd New Member

    Публикаций:
    0
    Регистрация:
    14 июн 2007
    Сообщения:
    67
    именно при DbgPrint, если его закомментировать, то работает нормально
     
  4. slow

    slow New Member

    Публикаций:
    0
    Регистрация:
    27 дек 2004
    Сообщения:
    615
    info == NULL || info->Name == NULL?

    для начала результат вызова ZwQueryObject стоит проверить на равенство 0 и таинство дзена почти наверняка откроется во всей красе.
     
  5. Weberd

    Weberd New Member

    Публикаций:
    0
    Регистрация:
    14 июн 2007
    Сообщения:
    67
    Нет, они не равны NULL, но я нашел в чем проблема. %wZ означает, что нужно передавать PUNICODE_STRING, а не UNICODE_STRING, то есть правильно
    Код (Text):
    1. DbgPrint("Additional info: %wZ", &info->Name);
    Я раньше много раз пользовался %wZ и всегда указывал правильно, сейчас мозг мне отказал....
    Кстати полное имя ключа реестра берется отлично, всем спасибо!