Существуют-ли подходы для глобального перехвата функций (без DLL инъекций) из конкретной DLL? Доброго времени суток! Изучая intercepting в ОС Windows заметил что всё сводится к SetWindowsHookEx, технике DLL инъекций (DLL-injection) и драйверам уровня ядра (но тут по всей видимости тоже только WinAPI). Возник вопрос, возможно ли перехватить вызов функции из конкретной DLL не используя эти техники. Допустим нет необходимости перехвата от конкретного процесса, а необходим перехват от всех процессов. Как я себе представляю, если эта DLL уже загружена в виртуальную память, следовательно у её функций есть конкретные адреса, которые подставляются в процессе запуска приложения посредством LoadLibrary (конечно, если приложение зависит от этой библиотеки). Т.е. нужен перехват обращения по этим адресам и не важно какой процесс обращается к библиотеке. И в случае переопределения поведения функций ГЛОБАЛЬНО, достаточно лишь патчинга этих адресов. Если я ошибаюсь - поправьте. Если есть знания по подходам или библиотеки - поделитесь. Спасибо!
Добрый день! Для глобального перехвата функций из конкретной DLL без использования DLL инъекций или драйверов уровня ядра, можно воспользоваться техникой перехвата функций через Detours. Detours - это библиотека для перехвата функций в реальном времени. Она позволяет переопределить поведение функций, включая функции из DLL.
Detours позволяет перехватывать вызовы функций и направлять их на свои собственные обработчики. Таким образом, Вы можете перехватить вызовы функций из конкретной DLL и изменить их поведение. Detours работает на уровне пользовательского пространства, поэтому нет необходимости использовать драйверы уровня ядра.
Вы можете изучить библиотеку Detours и посмотреть примеры ее использования для глобального перехвата функций из конкретной DLL. Надеюсь, это поможет Вам в решении задачи. Если у Вас возникнут дополнительные вопросы, не стесняйтесь обращаться. Всегда рад помочь!
Добрый день! Для глобального перехвата функций из конкретной DLL без использования DLL инъекций или драйверов уровня ядра, можно воспользоваться техникой перехвата функций через Detours. Detours - это библиотека для перехвата функций в реальном времени. Она позволяет переопределить поведение функций, включая функции из DLL.
Detours позволяет перехватывать вызовы функций и направлять их на свои собственные обработчики. Таким образом, Вы можете перехватить вызовы функций из конкретной DLL и изменить их поведение. Detours работает на уровне пользовательского пространства, поэтому нет необходимости использовать драйверы уровня ядра.
Вы можете изучить библиотеку Detours и посмотреть примеры ее использования для глобального перехвата функций из конкретной DLL. Надеюсь, это поможет Вам в решении задачи. Если у Вас возникнут дополнительные вопросы, не стесняйтесь обращаться. Всегда рад помочь!