Порядковый номер функции

Тема в разделе "WASM.WIN32", создана пользователем EvilsInterrupt, 7 дек 2004.

  1. EvilsInterrupt

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

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    Binary digit!



    Если взять base из IMAGE_EXPORT и оно к примеру было равным 10!

    тогда если в первом элементе массива AddressOfOrinal(т.е. куда

    эту указывает) будет порядковым номером элемента, в котором хранится

    rva нужной функции. И если это будет 5, а base у нас 10. то

    это будет 15й dword. Но что в начале 14 dword`ов в пустую?
     
  2. LocTb

    LocTb New Member

    Публикаций:
    0
    Регистрация:
    11 окт 2004
    Сообщения:
    54
    А самому - лень посмотреть?

    Берём длл с ненулевым base (например comctl32), находим таблицу ординалов, смотрим на первый элемент (это и есть индекс - смотри PE документацию), который будет где-то =0, теперь по адресу AdressTableRVA+Index*4 выбираем адрес функции.Проверяем например в hiew', что всё верно. Другое дело в программе нам следует использовать для импорта по ординалу - Index+base.
     
  3. EvilsInterrupt

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

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    спасибо за ответ, все что ниже это лишь для проверки мыслей:

    Мне недоконца ясны действия PE-загрузчика при линковке dll.



    Он смотрит на IMAGE_EXPORT_DIRECTORY адрес на которую указан в первом

    элемете из 16 в таблице директорий.

    В этой деректории он берет AddressOfNames и начинает искать нужную функ-

    цию по всем адресам указанным в этом массиве как только он находит он

    запоминает какой по счету этот элемент и обрщается к массиву на который

    указывает AddressOfOrdinals допустим было 5, тогда он обращается к 5му

    элементу берет от туда значение и прибавляет Base и что получилось указы-

    вает на нужный адрес в массиве AddressOfFunction.



    Все ли я правильно понял?
     
  4. LocTb

    LocTb New Member

    Публикаций:
    0
    Регистрация:
    11 окт 2004
    Сообщения:
    54
    EvilsInterrupt

    Почти:

    >берет от туда значение и прибавляет Base



    Нет, прибавлять не надо - ординалы уже скорректированны.
     
  5. EvilsInterrupt

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

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    LocTb

    Уже что то!

    Ты говоришь с корректированы, на кой фиг тогда вообще нужно base?
     
  6. LocTb

    LocTb New Member

    Публикаций:
    0
    Регистрация:
    11 окт 2004
    Сообщения:
    54
    Читай мой первый пост, последнее предложение.
     
  7. EvilsInterrupt

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

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    Вот что написал старший товарищ:



    нет. номер 10 - это не порядковый. там он как-то по другому ищет



    т.е. функция с номером 10 может быть где угодно в списке адресов



    Вот откуда не допонимание.