который загружает разные модули (DLL), обращающиеся к драйверу железки через DeviceIoControl.
Обращение к железке из основного процесса выглядит так:
Main Process: LoadLibrary (внешняя DLL)
Внешняя DLL: CreateFile ("\\.\Device")
DeviceIoControl(hDevice, ControlCode, DataBuffer)
Через DLL-hijacking я встраиваю в процесс свою собственную DLL, задача которой перехват обращений к железке. Эмуляция железки через подмену/перехват в драйвере и написанию собственного драйвера железки - не решение задачи, нужен перехват из собственной DLL.
1. Возможно ли подобное решение?
2. Если возможно, то как?
Платная? Или это я неправильно вопрос прочитал, но за что там платить? Функция DeviceIoControl - одна Перехвати её один раз в kernel32, и перехватишь все вызовы
правильно прочитал. консультацию хочу с примером кода
Через час напишу. За бесплатно. Тебе же нужно по шаблону хукнуть, или для каждой DLL с каждым вызовом - разный шаблон?
А вызовы из других программ как фильтровать? Есть какое-то время между вызовом CreateFileA (открытием драйвера) и вызовом DeviceIoControl. В этот период может прилететь ещё один CreateFileA
DLL-ки, которые к DeviceIoControl - разные, но из под одного процесса вызываются. Моя хукающая DLL в том же процессе вызывается
может тебе проще таблицу импорта переписать?
Тогда придётся ещё и LoadLibrary перехватывать и править таблицу импортов, когда другие DLL подгружаются. Утяжеляет конструкцию
Обсуждают сегодня