devbutch
@devbutch
Агент "Везде успеть"

Существуют-ли подходы для глобального перехвата функций (без DLL инъекций) из конкретной DLL?

Доброго времени суток!
Изучая intercepting в ОС Windows заметил что всё сводится к SetWindowsHookEx, технике DLL инъекций (DLL-injection) и драйверам уровня ядра (но тут по всей видимости тоже только WinAPI).
Возник вопрос, возможно ли перехватить вызов функции из конкретной DLL не используя эти техники. Допустим нет необходимости перехвата от конкретного процесса, а необходим перехват от всех процессов.

Как я себе представляю, если эта DLL уже загружена в виртуальную память, следовательно у её функций есть конкретные адреса, которые подставляются в процессе запуска приложения посредством LoadLibrary (конечно, если приложение зависит от этой библиотеки). Т.е. нужен перехват обращения по этим адресам и не важно какой процесс обращается к библиотеке. И в случае переопределения поведения функций ГЛОБАЛЬНО, достаточно лишь патчинга этих адресов.

Если я ошибаюсь - поправьте.
Если есть знания по подходам или библиотеки - поделитесь.

Спасибо!
  • Вопрос задан
  • 134 просмотра
Пригласить эксперта
Ответы на вопрос 1
@Kozel-007
Можно заменить библиотеку на свою, бинарно совместимую, которая пересылает все вызовы оригинальной, если хочет. Если у вас хватит прав в системе на то, что вы описали, то хватит и на то, чтобы в системе тупо библиотеку подменить.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы