SDT

Тема в разделе "WASM.WIN32", создана пользователем Timur1, 22 мар 2005.

  1. Timur1

    Timur1 New Member

    Публикаций:
    0
    Регистрация:
    22 мар 2005
    Сообщения:
    3
    Адрес:
    Russia
    В книге "Undocumented Windows NT" встретил такой код:



    #define SYSTEMSERVICE(_function)

    KeServiceDescriptorTable.ServiceTableBase[

    *(PULONG)((PUCHAR)_function+1)]



    Правильно ли я понимаю, что в начале кода каждой функции записан ее номер в таблице?
     
  2. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Нет, в начале кода каждой функции не записан ее номер в таблице.

    А в таблице указан адрес функции.
     
  3. MoonShiner

    MoonShiner New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2004
    Сообщения:
    44
    S_T_A_S_, ну если в начале функции идет такая штука как
    Код (Text):
    1.  
    2. mov eax,000000ACh
    3. int 2eh
    4.  
    ,

    то, видимо, можно считать index=ACh номером этой функции в KeServiceDescriptorTable, а уж по адресу KeServiceDescriptorTable+index*04 лежит ее адрес...
     
  4. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    MoonShiner



    физически-то ntdll.dll и ntoskrnl.exe это разные вещи, находятся по разным адресам и в разных кольцах защиты.

    то есть, в начале функции из ntdll.dll находится номер другой функции из ntoskrnl.exe
     
  5. Timur1

    Timur1 New Member

    Публикаций:
    0
    Регистрация:
    22 мар 2005
    Сообщения:
    3
    Адрес:
    Russia
    В примере в SYSTEMSERVICE передается вдрес функции с префиксом Zw, которая, видимо, из ntdll.dll. А в ntoskrnl.exe такие же названия или другие?
     
  6. MoonShiner

    MoonShiner New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2004
    Сообщения:
    44
    S_T_A_S_, угу, так точнее=)
     
  7. Timur1

    Timur1 New Member

    Публикаций:
    0
    Регистрация:
    22 мар 2005
    Сообщения:
    3
    Адрес:
    Russia
    УРА!!! Все работает! Таким способом не нужно знать номер функции. S_T_A_S и MoonShiner большое спасибо за помощь.