указание пути к dll

Тема в разделе "WASM.WIN32", создана пользователем Llirik, 6 апр 2009.

  1. Llirik

    Llirik Member

    Публикаций:
    0
    Регистрация:
    18 июл 2008
    Сообщения:
    471
    я кажется понял почему это изначально никак не хотело компилироваться)
    .386p
    includelib C:\masm32\lib\ntoskrnl.lib
    include C:\masm32\bin\win98\inc\win98\vmm.inc
    include C:\masm32\bin\win98\inc\win98\vxdldr.inc
    extrn KeNumberProcessors:PROC
    extrn KeRevertToUserAffinityThread:PROC
    extrn KesetSystemAffinityThread:PROC
    extrn IoForwardllrpSynchronously:PROC
    DECLARE_VIRTUAL_DEVICE OSXPKERN,1,0, OSXPKERN_Control, 99h, NTKERN_INIT_ORDER

    Begin_control_dispatch OSXPKERN
    Control_Dispatch Sys_Critical_Init, AdExpTabl
    End_control_dispatch OSXPKERN

    VxD_PAGEABLE_DATA_SEG
    hexport dd 0
    ntker db 'ntoskrnl.exe',0

    offunk dd offset kenumb
    dd offset KeRevertToUse
    dd offset KesetSystemAf
    dd offset IoForwardllrp

    aKeNumberPr db "KeNumberProcessors"
    aKeRevertToUse db "KeRevertToUserAffinityThread"
    aKesetSystemAf db "KesetSystemAffinityThread"
    aIoForwardll db "IoForwardllrpSynchronously"

    oftabntkrnl dd offset aKeNumberPr
    dd offset aKeRevertToUse
    dd offset aKesetSystemAf
    dd offset aIoForwardll
    ordinal db 0,0,1,0,2,0,3,0
    VxD_PAGEABLE_DATA_ENDS

    VxD_PAGEABLE_CODE_SEG

    BeginProc KeRevertToUse
    call KeRevertToUserAffinityThread
    EndProc KeRevertToUse

    BeginProc KesetSystemAf
    call KesetSystemAffinityThread
    EndProc KesetSystemAf

    BeginProc IoForwardllrp
    call IoForwardllrpSynchronously
    EndProc IoForwardllrp
    VxD_PAGEABLE_CODE_ENDS


    VxD_INIT_CODE_SEG

    BeginProc AdExpTabl
    push 0
    push offset offunk
    push offset ordinal
    push offset oftabntkrnl
    push 1
    push 4
    push 4
    push offset ntker
    push offset hexport
    VxDCall _PELDR_AddExportTable
    ret
    EndProc AdExpTabl

    VxD_INIT_CODE_ENDS

    end
    из-за двойных имен)
     
  2. Llirik

    Llirik Member

    Публикаций:
    0
    Регистрация:
    18 июл 2008
    Сообщения:
    471
    Друзья, ничего непонимаю) Почему этот код не хочет компилироваться?

    .386p
    includelib C:\masm32\lib\ntoskrnl.lib
    include C:\masm32\bin\win98\inc\win98\vmm.inc
    include C:\masm32\bin\win98\inc\win98\vxdldr.inc

    extrn KeNumberProcessors:BYTE
    extrn KeRevertToUserAffinityThread:PROC
    extrn KesetSystemAffinityThread:PROC
    extrn IoForwardlrpSynchronously:PROC
    DECLARE_VIRTUAL_DEVICE OSXPKERN,1,0, OSXPKERN_Control, 99h, NTKERN_INIT_ORDER

    Begin_control_dispatch OSXPKERN
    Control_Dispatch Sys_Critical_Init, AdExpTabl
    End_control_dispatch OSXPKERN

    VxD_PAGEABLE_DATA_SEG
    hexport dd 0
    ntker db 'ntoskrnl.exe',0

    offunk dd offset KeNumberProcessors
    dd offset KeRevertToUse
    dd offset KesetSystemAf
    dd offset IoForwardllrp
    aKeNumberPr db "KeNumberProcessorK"
    aKeRevertToUse db "KeRevertToUserAffinityThreaK"
    aKesetSystemAf db "KesetSystemAffinityThreaK"
    aIoForwardll db "IoForwardlrpSynchronouslK"

    oftabntkrnl dd offset aKeNumberPr
    dd offset aKeRevertToUse
    dd offset aKesetSystemAf
    dd offset aIoForwardll
    ordinal db 0,0,1,0,2,0,3,0
    VxD_PAGEABLE_DATA_ENDS

    VxD_PAGEABLE_CODE_SEG

    BeginProc KeRevertToUse
    call KeRevertToUserAffinityThread
    EndProc KeRevertToUse

    BeginProc KesetSystemAf
    call KesetSystemAffinityThread
    EndProc KesetSystemAf

    BeginProc IoForwardllrp
    call IoForwardlrpSynchronously
    EndProc IoForwardllrp
    VxD_PAGEABLE_CODE_ENDS


    VxD_INIT_CODE_SEG

    BeginProc AdExpTabl
    push 0
    push offset offunk
    push offset ordinal
    push offset oftabntkrnl
    push 1
    push 4
    push 4
    push offset ntker
    push offset hexport
    VxDCall _PELDR_AddExportTable
    ret
    EndProc AdExpTabl

    VxD_INIT_CODE_ENDS

    end
     
  3. TSS

    TSS New Member

    Публикаций:
    0
    Регистрация:
    13 апр 2009
    Сообщения:
    494
    Код наверно на дух непереваривает скрип-киддисов которым лень разбираться но хочется всего и сразу. Как-то так...
     
  4. Llirik

    Llirik Member

    Публикаций:
    0
    Регистрация:
    18 июл 2008
    Сообщения:
    471
    Я что-то нигде не нашел учебника по написанию vxd без использования макросов) но я всё же попытался от них избавиться в своем исходнике, но столкнулся с одной проблемой. я не знаю как директивой extrn обьявить метку( Например:

    .386p
    includelib C:\masm32\lib\ntoskrnl.lib
    include C:\masm32\bin\win98\inc\win98\vmm.inc
    include C:\masm32\bin\win98\inc\win98\vxdldr.inc
    extrn AdExpTabl:far
    LCOD segment para public 'CODE' use32
    ASSUME cs:LCOD

    Control_0 proc near
    cmp eax, 0
    jz AdExpTabl
    clc
    retn
    Control_0 endp
    LCOD ENDS

    ICOD segment para public 'CODE' use32
    ASSUME cs:ICOD
    AdExpTabl:
    push 0
    push offset offunk
    push offset ordinal
    push offset oftabntkrnl
    push 1
    push 4
    push 4
    push offset ntker
    push offset hexport
    VxDCall _PELDR_AddExportTable
    retn

    ICOD ENDS

    end ;Control_0
    Может подскажите?
     
  5. deLight

    deLight New Member

    Публикаций:
    0
    Регистрация:
    26 май 2008
    Сообщения:
    879
    Llirik
    расстрЭлять!
     
  6. Llirik

    Llirik Member

    Публикаций:
    0
    Регистрация:
    18 июл 2008
    Сообщения:
    471
    Раз никто здесь не знает, отвечаю на свой вопрос. Вот как должна выглядеть строка межсегментного перехода:

    jz far ptr AdExpTabl

    Но начиная с версии 6.11c ml в этом месте выдает error A2004: symbol type conflict
    а в более ранних версиях этот код компилируется, но там проблема с coff форматом( Может на сей раз вы соизволите дать решение этой проблемы?