как узнать какой dll загружен по определенному адресу

Тема в разделе "WASM.WIN32", создана пользователем katrus, 17 апр 2007.

  1. katrus

    katrus New Member

    Публикаций:
    0
    Регистрация:
    7 мар 2007
    Сообщения:
    612
    Допустим, есть адрес указывающий на код загруженный из dll библиотеки. Как можно узнать имя библиотеки (т.е., имя dll и, желательно, путь к нему)?
     
  2. SammIk

    SammIk Member

    Публикаций:
    0
    Регистрация:
    11 янв 2004
    Сообщения:
    90
    Адрес:
    Russia
    Спуститься вниз, ища сигнатуру PE фаила.
    Потом посмотреть имя dll.
    Почитай про пе-фаилы.
     
  3. asd

    asd New Member

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    952
    Адрес:
    Russia
    GetModuleFileName. Чтобы найти базовый адрес загрузки - посмотри статьи в разделе вирусология.
     
  4. agent007

    agent007 New Member

    Публикаций:
    0
    Регистрация:
    3 фев 2007
    Сообщения:
    166
    SammIk хаха))) и где это в ПЕ указано имя дллки?:)
     
  5. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    agent007
    в секции экспорта, вроде, если она, конечно, присутствует
     
  6. SammIk

    SammIk Member

    Публикаций:
    0
    Регистрация:
    11 янв 2004
    Сообщения:
    90
    Адрес:
    Russia
    agent007
    А ты спецификацию прочти=)
    В экспорте должно быть поле где указано имя длл.
    ртфм, как говориться.
    Поюзай ПЕтулз.
    Выдержка:

    Код (Text):
    1. [5.1] Таблица экспорта (Export Directory Table)
    2. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    3.    Информация экспорта начинается с Export Directory Table,  которая  описывает
    4. требуемую экспортную  информацию.  Export  Directory  Table  содержит  адресную
    5. информацию используемую при  развязке  настраиваемых  ссылок  в  внешние  точки
    6. входа внутри программы.
    7.                                                          Export Directory Table
    8.                                                          ~~~~~~~~~~~~~~~~~~~~~~
    9. +=====+=======+=======================+=====+=================================+
    10. |     | Size  |                       |Com- |                                 |
    11. |Base |  or   |     Name Of field     |ments|       Brief description         |
    12. |     | Type  |                       |     |                                 |
    13. +=====+=======+=======================+=====+=================================+
    14. #################[b]ВОТ[/b]####################################
    15. +-----+-------+-----------------------+-----+---------------------------------+
    16. | 0Ch | DWord | Name RVA              | No  | RVA строки указывающей на имя   |
    17. |     |       |                       |     | нашей библиотеки                |
    18. +-----+-------+-----------------------+-----+---------------------------------+
    19. #############################################################
     
  7. agent007

    agent007 New Member

    Публикаций:
    0
    Регистрация:
    3 фев 2007
    Сообщения:
    166
    ну так чуваку навена надо имя под которым длл была загружена...
     
  8. asmfan

    asmfan New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2006
    Сообщения:
    1.004
    Адрес:
    Abaddon
    Кстати, если говорить об этом поле в таблице экспорта, то в документации про него сказано мало.
    Какие есть соображения о цели его существования? И обязано ли оно быть идентичным имени длл? Из опыта- у меня и с другим содержимым этого поля длл грузились, но вот на чём это может сказаться? Да и вообще, это поле рудимент?
     
  9. rain

    rain New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2006
    Сообщения:
    976
    попробуй вызвать GetModuleFileName, хэндл это ж и есть смещение в памяти MZ хидера
     
  10. agent007

    agent007 New Member

    Публикаций:
    0
    Регистрация:
    3 фев 2007
    Сообщения:
    166
    в общем... пробегаемся в PEB по модулям, сравниваем адрес загрузки -> получаем имя длл, в юникоде правда.... Можно таким образом по всем процессам прогуляцо
     
  11. asmfan

    asmfan New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2006
    Сообщения:
    1.004
    Адрес:
    Abaddon
    [опередил)]
    GetModuleFileName на сколько я понял дёргает из peb'a и тому подобных структур.
    /ну у кого-нибудь есть соображения по поводу предыдущего моего поста?/
     
  12. PE_Kill

    PE_Kill New Member

    Публикаций:
    0
    Регистрация:
    16 янв 2006
    Сообщения:
    107
    Tlhelp32 или PSAPI и сравнение >imagebase <imagebase+imagesize
     
  13. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
  14. katrus

    katrus New Member

    Публикаций:
    0
    Регистрация:
    7 мар 2007
    Сообщения:
    612
    PE_Kill
    Ой ... не заметил твой ответ. Именно то что нужно. Спасибо!
     
  15. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    я знаю, что я нарк, но: PEB->LoaderData->InLoadOrderModuleList.
    аналог GetModuleFileName, но с приключениями на свои вторые 90 =))