Заставит exешник подгружать мою dll

Тема в разделе "WASM.WIN32", создана пользователем redwall, 25 окт 2010.

  1. redwall

    redwall New Member

    Публикаций:
    0
    Регистрация:
    25 окт 2010
    Сообщения:
    6
    Имеется некоторый exe файл. При старте он подгружает target.dll. Мне надо заменит тела некоторых функций из target.dll на свои. Если бы ехе сам подгружал мою dll вместе со своей, то там через handle'ы моя dll все бы подменила, есть соотв. код. Использую я detour. Для DetourFunction нужен handle процесса, можно ли его как-то получить? Или была идея замутить типа лаунчер, он загружает мою dll, потом нужный exe. Но так тоже не пашет. Есть еще вариант в лаунчере подгружать так же target.dll, тогда хандл там будет одинаковый и должно работать, но будет ли на практике?
     
  2. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Не будет, возвратит STATUS_CONFLICTING_ADDRESSES(ERROR_INVALID_ADDRESS), либо модуль будет отображён на другие адреса, соответственно описатель ваш изменится. Это не настоящий хэндл, это псевдохэндл, а они обычно являются ссылками как и в данном случае это адрес проекции.
     
  3. redwall

    redwall New Member

    Публикаций:
    0
    Регистрация:
    25 окт 2010
    Сообщения:
    6
    А как тогда быть?
     
  4. RET

    RET Well-Known Member

    Публикаций:
    17
    Регистрация:
    5 янв 2008
    Сообщения:
    789
    Адрес:
    Jabber: darksys@sj.ms
    сделайте свою target.dll с нужными для подмены функциями + function forwarding, переименуйте "старую" dll. В общем тут заморачиваться-то нечего, курите Рихтера.
    ADD: если target.dll подгружается динамически, то занесите свою длл в импорт exe-шника (это можно сделать например CFF-Explorer'ом) и хукайте LdrLoadDll на стадии DLL_PROCESS_ATTACH в своей длл.
     
  5. redwall

    redwall New Member

    Публикаций:
    0
    Регистрация:
    25 окт 2010
    Сообщения:
    6
    По первому пункту: экспортировать из своей длл через pragma или типа того? Знаю такой способ, но 1500 функций перенаправлять не очень как-то.
    Второй пункт обязательно опробую, по ходу дела именно то, что я и хотел.
     
  6. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    Если юзаешь detours, то то там все это реализовано и расписано как юзать (см. ф-ю DetourCreateProcessWithDll в мане к detours или, например, тут)
     
  7. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    фуу.. гланды через задницу решили удалять.
     
  8. karabas_barabas

    karabas_barabas Member

    Публикаций:
    0
    Регистрация:
    9 авг 2009
    Сообщения:
    168
    попробуй перехватывать GetProcAddressA/LdrGetProcedureAddress и подменять адрес базы на базу трудллки, т.к. я понимаю что твою дллку-переходник прога будет считать target.dll