RtlGetVersion и ntdll.lib

Тема в разделе "WASM.WIN32", создана пользователем sasha_s, 9 дек 2008.

  1. sasha_s

    sasha_s New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2005
    Сообщения:
    165
    Адрес:
    Belarus
    Заюзал в своем драйвере вызов RtlGetVersion. Или не линкуется, или если подключить ntdll.lib линкуется но не грузиться, выдавая ошибку 127 (The specified procedure could not be found.).
    Мой драйвер -- .sys файл который я гружу с помощью OpenSCManager, CreateService, StartService и таким же макаром выгружаю: ControlService(..., SERVICE_CONTROL_STOP, ...). Т.е. этот драйвер не грузится на старте винды, а только тогда, когда всё уже работает.

    Так как узнать-то версию винды находясь в ядре?
     
  2. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    sasha_s
    В нтдлл юзермодный кодес, тебе из ядра нужна RtlGetVersion(). Она сводится к чтения UsSharedData.
    Код (Text):
    1.    // The NT Version.
    2.     //
    3.     // N. B. Note that each process sees a version from its PEB, but if the
    4.     //       process is running with an altered view of the system version,
    5.     //       the following two fields are used to correctly identify the
    6.     //       version
    7.     //
    8.  
    9.     ULONG NtMajorVersion;
    10.     ULONG NtMinorVersion;
    Посмотри в разных ядрах смещение этого поля, а вдуг повезёт и оно не меняетсо..
    Можно из PEB взять, хотя стрёмно лезть туда. Можно из PCR взять. Мно что можно, я бы взял из заголовка ядра.
     
  3. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    sasha_s
    подключить ntdll.lib
    А если подключить ntoskrnl?
    + afaik RtlGetVersion доступна wxp+, для ранних версий можно использовать PsGetVersion.
     
  4. sasha_s

    sasha_s New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2005
    Сообщения:
    165
    Адрес:
    Belarus
    ntoskrnl.lib подключен, но в нем ее нет (при линковке ругается). Да, забыл сказать что юзаю Win2kDDK. А PsGetVersion какого-то хрена не фурычит, а ласт еррор как посмотреть не знаю. Вот кстати еще вопросс: Как посмотреть ласт еррор, если ф-ция возвращает не код, а BOOLEAN?
     
  5. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    sasha_s
    Доку иногда оказывается тоже полезно читать, да.
     
  6. sasha_s

    sasha_s New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2005
    Сообщения:
    165
    Адрес:
    Belarus
    Спасибо тебе мил человек!