Не получаеться получить адрес таблицы импорта(

Тема в разделе "WASM.ASSEMBLER", создана пользователем mark4545, 15 дек 2007.

  1. mark4545

    mark4545 New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2007
    Сообщения:
    14
    Код (Text):
    1.      push 0
    2.      call GetModuleHandle
    3.      mov imagebase,eax  ;image baze)
    4.      add eax,3ch  ;eax pointer to PE signature
    5.      mov eax,[eax] ;in eax RVA PE signature
    6.      add eax,imagebase ;VA off PE signature on eax
    7.      mov pesignature,eax ;save pe signature
    8.      add eax,080h ;in eax pointer to RVA of IAT
    9.      mov eax,[eax] ;in eax RVA IAT
    10.      add eax,pesignature ;Addres of iat
    11.      ret
    в выходе в еах отлично значение от возращеного ImageDirectoryEntryToData.B вообще по адресу в еах одни 0 храняться(.
     
  2. wan1786

    wan1786 New Member

    Публикаций:
    0
    Регистрация:
    6 дек 2007
    Сообщения:
    19
    mov eax,[eax] ;in eax RVA IAT
    add eax,pesignature ;Addres of iat
    Ошибка здесь. должнобыть add eax,imagebase.
     
  3. AshBone

    AshBone New Member

    Публикаций:
    0
    Регистрация:
    12 дек 2007
    Сообщения:
    101
    с чего ты решил, что в ЕАХ окажется RVA на PE сигнатуру?

    если в масме, то попробуй так:

    push NULL
    call GetModuleHandle
    mov ImageBase,EAX
    assume EAX:PTR IMAGE_DOS_HEADER
    add EAX,[EAX].e_lfanew
    assume EAX:PTR IMAGE_NT_HEADERS
    lea EAX,[EAX].OptionalHeader.DataDirectory
    mov EAX,dword ptr [EAX+08h]
    add EAX,ImageBase

    ; Здесь в ЕАХ будет адрес таблицу импорта
     
  4. wan1786

    wan1786 New Member

    Публикаций:
    0
    Регистрация:
    6 дек 2007
    Сообщения:
    19
    забавно. разница 16 сек. не рва а оффсет.
     
  5. mark4545

    mark4545 New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2007
    Сообщения:
    14
    последовал совету wan1786 все гуд.