Странности с экспортом

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

  1. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    Код (Text):
    1. mov ebx,3ch
    2.       mov eax,offset WS
    3.       call read              ;в буфе адрес начала пе
    4.       mov eax,offset WS
    5.       mov ebx,buf
    6.       add ebx, 78h
    7.       call read       ;в буфе адресс экспортной таблы
    8.       mov eax,offset WS
    9.       mov ebx,buf
    10.       add ebx, 18h
    11.       call read     ;в буфе имя библы
    процедура реад принимает два параметра, имя в еах и смещение в ебх, пишет в двордный буф, но почемуто после последнего калл, в буфе не адресс имени библы, хотя вроде всё так как надо.
     
  2. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Покажи read или жди телепатов.
     
  3. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    Код (Text):
    1. push 0h
    2.       push 80h
    3.       push 3h
    4.       push 0h
    5.       push 1h
    6.       push 80000000h
    7.       push eax
    8.       call CreateFile
    9.       mov hf, eax
    10.       push 0
    11.       push 0
    12.       push ebx
    13.       push eax
    14.       call SetFilePointer
    15.       push 0
    16.       push offset sh
    17.       push offset 4
    18.       push offset buf
    19.       push hf
    20.       call ReadFile
    21.       ret
    А зачем он тебе не подскажешь?
     
  4. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Но это RVA, а не адрес в файле!

    +12, а не +18h

    Тут тоже RVA.
     
  5. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    Ну это я ваще искал Num of Name Pointers, но для примера лучше искать имя библы 0ch.

    Ну в принцепе я знаю, но и как быть дальше, я думал что смещение относительно аймедж база, будет указывать в мамяти тудаже куда, и смещение относительна 0 в файличке, или я не прав?
     
  6. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    Всё понял, надо перебирать все секции в поисках нужной, ух блин.
     
  7. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    SPA
    Упаковщики иди читай! Это ж одна из лучших статей
     
  8. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.348
    Необязательно. Можно выделить память размером SizeOfImage и скопировать туда содержимое секций используя поле VirtualSize секции (остаток - VirtualSize-SizeOfRawData - заполняем нулями). Т.е. сформировать в памяти образ программы в том виде, в каком он будет после загрузки лоадером. Потом можно читать данные, используя RVA как смещение от начала массива.
     
  9. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Или LoadLibraryEx заюзать ;)