Вызвать функцию в ехе файле

Тема в разделе "WASM.BEGINNERS", создана пользователем katrus, 10 авг 2009.

  1. katrus

    katrus New Member

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

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    запуск+инжект+вызов
    или переделать .exe в .dll
     
  3. katrus

    katrus New Member

    Публикаций:
    0
    Регистрация:
    7 мар 2007
    Сообщения:
    612
    Разве можно переделать ехе в dll?
     
  4. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    А LoadLibrary("exe_name"); call [eax+offset] не катят?
     
  5. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    1. Поиск проекций. Перечисление модулей, альтернатива не затрагивает базу данных загрузчика, а перечисление выполняется посредством получения имён проекций.
    2. Получение адреса функции. Алгоритм должен содержать в себе мощный функционал, например сканер памяти и дизасм инструкций. Иначе если модуль побит получение его базы или разбор кода невозможен.
    3. Загрузка модуля из памяти, стороний лоадер/модификация деволтного загрузчика.
    4. Прежде изучить матчасть полностью.
     
  6. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    katrus
    флаг PE заголовке в выставь, и точку входа например обнули - будет длл

    max7C4
    LoadLibrary возможно не станет грузить PE у которого не выставлен флаг что он длл

    Clerk
    зачем так сложно для такой простой задачи?
     
  7. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    GoldFinch
    что мешает поставить?
     
  8. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    Ничего не мешает, но у ехе обычно нету релоков - LoadLibrary грузить не захочет.
    Если релоки есть - проблема не понятна.
     
  9. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    cppasm
    LoadLibrary загрузит exe (без флага IMAGE_FILE_DLL) по тому адресу, по какому ей понравится, независимо от того, есть ли у него релоки. Правда крайне маловероятно, что там что-то будет работать, но автор же хотел только вызвать. :) Правда, если автор уверен, что вызываемая функция базонезависима, и её работоспособность так же не зависит от состояния процесса, то можно вполне ожидать, что ф-ия ещё и успешно вернёт управление.
     
  10. roman_pro

    roman_pro New Member

    Публикаций:
    0
    Регистрация:
    9 фев 2007
    Сообщения:
    291
    Без релоков можно свой exe (который хочет вызвать функцию) разместить по нестандартному адресу (опция линкера /BASE), дабы дефолтный для exe адрес (0x00400000) был свободен, тогда LoadLibrary, по идее, нормально сработает (ессно PE заголовок надо поправить на предмет точки входа и флагов - типа это DLL).
     
  11. Shooshpanchik

    Shooshpanchik Member

    Публикаций:
    0
    Регистрация:
    29 сен 2006
    Сообщения:
    117
    ЭЭЭэээммм, а если он загрузит тот ЕХЕ, и допустим тому ЕХЕ пофигу на все ее предыдущие состояния. Инжектирует код. Имхо тот ЕХЕ будет то в совем адресном пространстве, и его RET, приведет к возврату из совсем не того кода... Или я гоню ?
     
  12. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    ни кто не мешает указать точку входа другую.
    думаю в том exe найдется 6 (
    Код (Text):
    1. xor eax, eax
    2. inc eax
    3. ret 12
    ) свободных байт для альтернативной точки входа
    но если и не найдется, то никто не мешает перехватить управление и нормально выйти из dll
     
  13. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    max7C4
    достаточно обнулить поле entrypoint в заголовке
     
  14. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    тоже вариант, но не на всех виндах будет работать