Про подгружаемые dll и экспортируемые из них функции.

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

  1. redwall

    redwall New Member

    Публикаций:
    0
    Регистрация:
    25 окт 2010
    Сообщения:
    6
    Некий exe подключает dll. Все программы, показывают, что кроме этой dll никаких других, которые он по идее должен подгружать, он не трогает. Сразу первый вопрос: если в этой dll есть функция, которая тоже подгружает другую dll, то в этом случае программы типа Dependency Walker должны показывать, что exe использует помимо первой еще и сторонние dll?
    Так вот. По ходу дебага я выясняю, что те остальные dll тоже в памяти. Отсюда вопрос: дополнительные dll импортируют функции из первой(основной), и я хочу некоторые функции из первой проdetourить, буду ли вызывать те функции из первой dll, которые я подменил, если их вызывают из остальных dll?
    Если не совсем понятно, пример:
    first.dll
    на экспорт:
    int sum(int,int);
    int diff(int,int);

    exe
    импортирует
    int sum(int,int)
    а sum в свою очередь подключает second.dll

    second.dll
    импортирует из first.dll
    int diff(int,int);
    в этом месте, если я уже перенаправил diff из первой dll на свою функцию, если вызовется diff из второй dll, она перекинется на мою?
    или надо все-таки следить за подгружением второй и уже через её handle detour'ить?
    Надеюсь, понятно объяснил :)
     
  2. deLight

    deLight New Member

    Публикаций:
    0
    Регистрация:
    26 май 2008
    Сообщения:
    879
    redwall
    Не перевариваю уже такой сложности речевых конструкций )
    Если это приемлимо в контексте задачи, то самое простое решение - сплайс ntdll!LdrLoadDll
    Код (Text):
    1. NTSTATUS LdrLoadDll (
    2.     IN PWSTR DllPath OPTIONAL,
    3.     IN PULONG DllCharacteristics OPTIONAL,
    4.     IN PUNICODE_STRING DllName,
    5.     OUT PVOID *DllHandle    );
    оттуда отлавливаете загрузку всех модулей, далее с каждым делаете эти ваши патчи.

    Быстрее делайте пока не предложили захват с инвалидацией ссылки и последующим бектрейсом
    (и алгоколизмом в результате перенапряжения).
     
  3. leo

    leo Active Member

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

    punxer Андрей

    Публикаций:
    0
    Регистрация:
    16 окт 2006
    Сообщения:
    1.327
    Адрес:
    Ржев
    deLight
    Класс! В точку))
     
  5. RET

    RET Well-Known Member

    Публикаций:
    17
    Регистрация:
    5 янв 2008
    Сообщения:
    789
    Адрес:
    Jabber: darksys@sj.ms
    в мой огород? :)
     
  6. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    deLight
    И это всё что может сказать по сабжу тупой троль ?
     
  7. deLight

    deLight New Member

    Публикаций:
    0
    Регистрация:
    26 май 2008
    Сообщения:
    879
    Clerk
    Вы вроде не говорили ничего по сабжу в этом топе.

    RET
    (=
     
  8. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    deLight
    LdrSetAppCompatDllRedirectionCallback etc.
     
  9. punxer

    punxer Андрей

    Публикаций:
    0
    Регистрация:
    16 окт 2006
    Сообщения:
    1.327
    Адрес:
    Ржев
    Clerk
    развивайте тему - не останавливайтесь
     
  10. deLight

    deLight New Member

    Публикаций:
    0
    Регистрация:
    26 май 2008
    Сообщения:
    879
    Clerk
    Очередной некро-фейл.

    Win7 [6.1.7600]
    Код (Text):
    1. .text:77F5C9DA _LdrSetAppCompatDllRedirectionCallback@12 proc near
    2. .text:77F5C9DA                 xor     eax, eax
    3. .text:77F5C9DC                 retn    0Ch
    4. .text:77F5C9DC _LdrSetAppCompatDllRedirectionCallback@12 endp
    Как для очистки eax сойдет.
    Ждем решений для загрузчика MS DOS 6.22 (юзайте copy con solution.asm), проэмулированных на движке флай.
     
  11. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    deLight
    Да, на 7 не поддерживается. Но я лишь сказал в какую сторону смотреть. Если бы вы знали что делает эта функция(точнее для чего предназначена), то поняли бы смысл.
     
  12. deLight

    deLight New Member

    Публикаций:
    0
    Регистрация:
    26 май 2008
    Сообщения:
    879
    Clerk
    В сторону неадекватных устаревших решений, мы прочитали, сенкс.
    Разбирайте лучше ваши графы, их еще не отменили.
     
  13. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    deLight
    Устаревших ?
    Если не экспортируется стаб для установки, это не значит что не юзается какойто функционал, просто к слову.
    Да это ваши патчи унылый гуан. Этож каким тупым нужно быть чтоб для подмены модуля патчить загрузчик бгг)
     
  14. deLight

    deLight New Member

    Публикаций:
    0
    Регистрация:
    26 май 2008
    Сообщения:
    879
    Clerk
    Это, как и было указано, простые решения для ТС, пока хватит с головой.
    Прекратите дефекацию и запускайте отладчик (c:\vx\clerk\vx\dbg\olly.exe)
     
  15. Clerk

    Clerk Забанен

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

    deLight New Member

    Публикаций:
    0
    Регистрация:
    26 май 2008
    Сообщения:
    879
    Clerk
    Типичный вид вашего постенга?
     
  17. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    deLight
    Наверно автор хотел показать что олли гибкая как амёба. Но насчёт постенга это верно, только это к вам относится. Ничего по делу, один троллинг и п.издобольство.