ZwSuspendThread

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

  1. relikt

    relikt New Member

    Публикаций:
    0
    Регистрация:
    2 ноя 2004
    Сообщения:
    22
    Адрес:
    Russia
    Как вызвать эту функцию из ядра, просто объивить ее не получается, линкер ругается:

    1>myobj.obj : error LNK2019: unresolved external symbol _ZwSuspendThread@8 referenced in function _MyFunction@0

    1>i386\mysys.sys : error LNK1120: 1 unresolved externals



    В KeServiceDescriptorTable лазить не хочется.
     
  2. SteelRat

    SteelRat New Member

    Публикаций:
    0
    Регистрация:
    26 авг 2004
    Сообщения:
    409
    ZwSuspendThread есть только в ntdll.lib Поэтому прилинковать можно, а драйвер работать не будет :) он не видит эту .dll, он просто не стартанёт :)
     
  3. relikt

    relikt New Member

    Публикаций:
    0
    Регистрация:
    2 ноя 2004
    Сообщения:
    22
    Адрес:
    Russia
    Ну так ведь ntddk.h всяка хрень объявлена и ничего, например ZwOpenKey.
     
  4. SteelRat

    SteelRat New Member

    Публикаций:
    0
    Регистрация:
    26 авг 2004
    Сообщения:
    409
    ZwOpenKey экспортируется в ntoskrnl.exe, а он виден всем.
     
  5. relikt

    relikt New Member

    Публикаций:
    0
    Регистрация:
    2 ноя 2004
    Сообщения:
    22
    Адрес:
    Russia
    Получается что надо адрес ручками достовать. а как динамически определить по какому смешению он в таблице лежит?
     
  6. relikt

    relikt New Member

    Публикаций:
    0
    Регистрация:
    2 ноя 2004
    Сообщения:
    22
    Адрес:
    Russia
    просто в разных виндах, он может по разному сидеть, я так пологаю.
     
  7. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"
    ZwSuspendThread можно вызвать получив ее адрес из SDT.

    А индекс функции в SDT можно извлечь отдизасмив код ntdll.
     
  8. SteelRat

    SteelRat New Member

    Публикаций:
    0
    Регистрация:
    26 авг 2004
    Сообщения:
    409
    relikt

    Как-то была у меня мысль сделать унифицированный драйвер (типа плугинов в ядре) надо было .dll подгружать динамически. Подгружать как, нашёл, но экспортируется эта ф-ция в ntdll.dll. А драйвер "не видит" эту дэлл :dntknw: физически ! Если только как описано в моём посте, но сложновато...
     
  9. relikt

    relikt New Member

    Публикаций:
    0
    Регистрация:
    2 ноя 2004
    Сообщения:
    22
    Адрес:
    Russia
    Спасибо, буду разбиратся.
     
  10. relikt

    relikt New Member

    Публикаций:
    0
    Регистрация:
    2 ноя 2004
    Сообщения:
    22
    Адрес:
    Russia
  11. relikt

    relikt New Member

    Публикаций:
    0
    Регистрация:
    2 ноя 2004
    Сообщения:
    22
    Адрес:
    Russia
    а можно ли вызывать из ядра через прерывание?

    например:



    _asm {

    mov eax, serviceid

    lea edx, [esp+4]

    int 2eh

    ret parameterbytestopopoff

    }
     
  12. SteelRat

    SteelRat New Member

    Публикаций:
    0
    Регистрация:
    26 авг 2004
    Сообщения:
    409
  13. CARDINAL

    CARDINAL Member

    Публикаций:
    0
    Регистрация:
    23 янв 2004
    Сообщения:
    551
    Адрес:
    Moscow


    почему бы и нет ? )