#define SYSTEMSERVICE... можно ли на MASM ?

Тема в разделе "WASM.NT.KERNEL", создана пользователем UFO, 30 май 2008.

  1. UFO

    UFO New Member

    Публикаций:
    0
    Регистрация:
    17 май 2008
    Сообщения:
    1
    Привет всем (и извиняюсь за нехороший русский язык свой),

    я уверен Вы этот #define все знаете:
    Код (Text):
    1. #define SYSTEMSERVICE(_function)
    2. KeServiceDescriptorTable.ServiceTableBase[*(PULONG)((PUCHAR)_function+1)]
    .. который мы используем как:
    Код (Text):
    1. OldNtCreateFile=(NTCREATEFILE)(SYSTEMSERVICE(ZwCreateFile));
    .. и мне пришлос это делать как:
    Код (Text):
    1. mov ecx,ZwCreateFile
    2. mov ecx,[ecx+2]
    3. mov ecx,[ecx]
    4. mov ecx,[ecx+1]
    Потом я увидел (у y0da) что даже есть macro:
    Код (Text):
    1. APIAddressFromIT MACRO api, reg
    2.     mov     reg, api
    3.     mov     reg, [reg + 2]
    4.     mov     reg, [reg]
    5. ENDM
    у меня просто вопрос, каким зинтаксом можно masm-linker заставит,
    чтобы он поставил этот адресс не в IТ а прямо в код.
    Потому что он это же делает при этом:
    Код (Text):
    1. mov eax, KeServiceDescriptorTable
    Или С-compiler делал бы то же самое (черес IT) :?

    спасибо :)