В Windows, все дисковые операции ввода/вывода в конечном итоге происходит с помощью Win32 API вызовов, как CreateFile
, SetFilePointer
и т.д.для Windows: Как перехватить Win32 диск I/O API
Теперь возможно перехватить эти дисковый ввод/вывод Win32 вызывает и подключается к вашему собственному коду во время выполнения для всех динамически связанных приложений Windows? То есть приложения, которые получают свою функциональность CreateFile
через библиотеку Windows вместо статической библиотеки C.
Некоторые ограничений, что у меня есть следующие:
Нет Исходный код: не будет иметь исходный код для процессов, я хотел бы перехватить.
Безопасность нити: Код моего крючка может динамически выделять собственную память. Кроме того, поскольку эта память будет использоваться совместно с несколькими перехваченными процессами (и их потоками), я хотел бы иметь возможность сериализовать доступ к ней.
Условная делегация и наиважнейший: На моем крючке коде, я хотел бы быть в состоянии решить, следует ли делегировать оригинальную функциональность API Win32, или использовать свою собственную функциональность, или оба. (Так же, как дополнительный вызов метода суперкласса в наиважнейшей метода подкласса в C++ или Java.)
Regular в пользовательском пространстве код: Я хочу быть в состоянии выполнить выше без необходимости писать любой драйвер устройства, в основном из-за сложности, связанной с написанием одного.
Если возможно, я буду благодарен некоторым указателям. Исходный код не нужен, но всегда приветствуется!
Вы смотрели Detours? http://research.microsoft.com/en-us/projects/detours/ – manuell
Это коммерческий. Я хочу бесплатный, и я готов написать его сам, когда узнаю, что такое основные API и участники концепции. – Harry
Возможно, вы захотите изучить mhook, если Detours - это не то, что вы хотите. – easuter