Фреймворк для свободной работы в Ring0 на C++17. Возможности: Работа с портами ввода-вывода, проброс в юзермод через IOPL Работа с памятью (физической и виртуальной - юзермодной и ядерной) - чтение/запись/маппинг MSR Создание ядерных и юзермодных потоков Доставка APC из ядра Загрузка неподписанных драйверов (без поддержки SEH) Отправка ядерных каллбэков в юзермод (Ob*** и Ps***) Исполнение произвольного кода в Ring0 из юзермодной памяти, поддержка SMEP Парсер PE-файлов Парсер PDB API и обёртки над системными функциями для ядра и юзермода без зависимостей https://github.com/HoShiMin/Kernel-Bridge
HoShiMin, приятный код. на вскидку - можно ли запилить имя девайса чтобы не захардкожено было а под систему? почему фильтр, а не легаси простое, зачем депенденсы в виде FltMgr (ясно что он есть везде), плюс инсталить проще обычный. ну и по блокировке - раз там разошелся так, было бы круто и на пушлоках увидеть. но так очень кулл!! спасибо что поделился.
Имя девайса можно таскать из реестра. Думаю, добавлю возможность поменять имя, когда сделаю для реестра удобные классы. Фильтр - потому что в планах юзермодные фильтры на файловую систему и девайсы (по аналогии с Ps*** и Ob***-каллбэками), плюс, FltMgr необходим для Communication-портов. Но инсталлить можно и как обычный драйвер, просто не будут доступны юзермодные фильтры. Для пушлоков - тоже напишу, но чуть попозже