Узнать имя DLL

Тема в разделе "WASM.BEGINNERS", создана пользователем ricke, 24 май 2009.

  1. ricke

    ricke New Member

    Публикаций:
    0
    Регистрация:
    13 дек 2008
    Сообщения:
    12
    //просьба удалить тема клон под названием "sad"
    Всем привет.
    Столкнулся с проблемой, есть длл которая попадает в процесс, как можно из длл узнать свое имя?имеется ввиду не имя и путь процесса в котором она находится, а именно имя длл в которой выполняется код.
    Думал с помощью peb сделать так:
    Код:

    while ( lpListCurrent != lpListBegin )
    {
    Module = CONTAINING_RECORD( lpListCurrent, LDR_DATA_TABLE_ENTRY, InMemoryOrderModuleList );
    if ( pGetModuleHandleW( Module->BaseDllName.Buffer ) == pGetModuleHandleW( NULL ) )
    {
    .....

    пока еще не пробовал, так как нет возможности, может есть другие пути?
     
  2. barton

    barton New Member

    Публикаций:
    0
    Регистрация:
    19 июл 2008
    Сообщения:
    164
    Адрес:
    Czechoslovakia
    CHAR szModuleFileName[MAX_PATH];
    GetModuleFileName(GetMyBase(),szModuleFileName,sizeof(szModuleFileName));
     
  3. ricke

    ricke New Member

    Публикаций:
    0
    Регистрация:
    13 дек 2008
    Сообщения:
    12
    barton
    очень интерессно ))
    щас добрался все попробовал, все работает отлично, спасибо :)
    а мой способ как я и думал не прокатил, потому что вернулось имя процесса :/
     
  4. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    GetModuleFileName(hInstance) уже не работает?
     
  5. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Определяем текущий адрес(Call $+5) это в стеке будет первый параметр для LdrFindEntryForAddress(), потом её юзаем. Вернёт указатель на LDR_DATA_TABLE_ENTRY для текущего модуля. Оттуда извлекаем BaseDllName.
    По мне так лучше вручную найти пропарсив базу лоадера.
     
  6. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    Ребят, ну вы конкретные конечно извращенцы :)
     
  7. BigGreen

    BigGreen New Member

    Публикаций:
    0
    Регистрация:
    19 май 2009
    Сообщения:
    34
    MSoft
    это обычный способ - очень даже простой - именно его и юзают высокоуровневый апи вроде того что ты предложил
    один раз написал либу для работы со структурами лоадера и забыл
    это только BaseDllName даст а что если нужно получить FullDllName
     
  8. BigGreen

    BigGreen New Member

    Публикаций:
    0
    Регистрация:
    19 май 2009
    Сообщения:
    34
    блин, только базовое имя и нужно было..
    верните редактирование хоть на минут 5 после поста
     
  9. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    BigGreen
    Бгг огонь горячий, мы знаем.. Там рядом и FullDllName.)
     
  10. BigGreen

    BigGreen New Member

    Публикаций:
    0
    Регистрация:
    19 май 2009
    Сообщения:
    34
    да согласен, прогнал