Узнать ImageBase

Тема в разделе "WASM.BEGINNERS", создана пользователем Gonzzik, 5 авг 2007.

  1. Gonzzik

    Gonzzik New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2007
    Сообщения:
    61
    пишу длл. как бы узнать ImageBase процесса который ее подгрузит?
     
  2. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    смотри в сторону PSAPI
     
  3. Gonzzik

    Gonzzik New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2007
    Сообщения:
    61
    Может из РЕВ взять? будет ли работать под разными осями? (2000 - Vista)
     
  4. Hellspawn

    Hellspawn New Member

    Публикаций:
    0
    Регистрация:
    4 фев 2006
    Сообщения:
    310
    Адрес:
    Москва
    GetModuleHandle(nil)
     
  5. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    PEB в каждой системе отличается.
     
  6. nitrotoluol

    nitrotoluol New Member

    Публикаций:
    0
    Регистрация:
    5 сен 2006
    Сообщения:
    848
    Вариантов несколько... Самый простой:
    А это для извращенцев - через GetCurrentProcessId. Далее перечисляем список процессов через ТулХелп. сопоставляем Ид и ИмаджБейз.
     
  7. Mental_Mirror

    Mental_Mirror New Member

    Публикаций:
    0
    Регистрация:
    7 май 2007
    Сообщения:
    431
    Для таких страшных вопросов есть секретная инструкция
    Код (Text):
    1. mov eax, fs:[30h]
    , или на крайняк в NT -
    Код (Text):
    1. ZwQueryInformationProcess(...,ProcessBasicInformation,...,...,....)
     
  8. Mental_Mirror

    Mental_Mirror New Member

    Публикаций:
    0
    Регистрация:
    7 май 2007
    Сообщения:
    431
    Gonzzik
    Самый простой и самых правильный - GetModuleHandle(NULL) - как известно когда функция вызывается даже из DLL, она получает базовый адрес не DLL, а EXE куда она загружается. Ну все это написано в MSDN:
    If this parameter is NULL, GetModuleHandle returns a handle to the file used to create the calling process.
     
  9. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    getmodulehandle(0)=
    mov eax,[fs:18]
    mov eax,[eax+30]
    mov eax,[eax+8]
     
  10. nobodyzzz

    nobodyzzz New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2005
    Сообщения:
    475
    сканировать память на предмет PE-заголовка?
     
  11. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    nobodyzzz, не обязательно сработает... вдруг пару маппингов ехешников открыто :)
     
  12. nobodyzzz

    nobodyzzz New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2005
    Сообщения:
    475
    FreeManCPM
    хм imho,если в коде длл бут ченить типа
    Код (Text):
    1. call @F
    2. @@: pop eax
    3. invoke ScanForPEHeader, eax
    должно сработать =))))
     
  13. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    nobodyzzz
    надо получить ImageBase ехешника. если выполнишь такое из длл, получишь ImageBase длл :)
     
  14. nobodyzzz

    nobodyzzz New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2005
    Сообщения:
    475
    FreeManCPM
    ой =)) лоханулся чота =)