驱动 DLL 注入器 描述
驱动 DLL 注入器是一个强大的工具,允许用户使用他们喜欢的映射器加载他们选择的驱动程序。通过利用未签名驱动程序加载器(如 KDmapper)的功能,该注入器是在 Windows 10 2004 x64 进程上构建和测试的。
该驱动程序挂钩一个名为 xKdEnumerateDebuggingDevices 的补丁保护安全函数,用于与我们的用户模式进程通信。这种方法在流行的反作弊系统中很容易被检测到,因此我们更进一步,将用户模式线程困在内核中,以恢复原始函数地址的方式进行通信,从而绕过函数完整性检查。
驱动程序执行以下操作来隐藏留下的痕迹:
VAD 操纵:驱动程序通过利用不为人知的未文档化虚拟地址描述符(VAD)函数(如 MiInsertChange 和 MiAllocVad),策略性地在线程堆栈后面分配内存。一旦 VAD 被分配且 DLL 成功加载,驱动程序将从 VAD 树中移除该 VAD。
PTE 操纵:为了绕过 NtQueryVirtualMemory 的检查,驱动程序操纵页表项(PTE)使 VAD 分配的页面可执行。通过修改 PTE,驱动程序确保 VAD 在启用可执行(X)位时不会更新,从而规避潜在的限制。
清除 PiDDBCacheTable、MmUnloadedDrivers(哈希桶列表)。
根据你为驱动程序使用的手动映射器,你还需要考虑大内存池。
用户模式进程利用 Discord 的 overlay 来调用我们 DLL 的 main 函数。
用户模式进程执行以下操作:
要使用驱动 DLL 注入器,请按照以下步骤操作:
1. 选择并安装兼容的映射器,例如 KDmapper。
2. 编译或构建驱动 DLL 注入器项目。
3. 使用选定的映射器加载驱动程序
4. 启动测试应用程序(启用 discord overlay)
5. 启动用户模式应用程序并等待 Hello World 消息框。
在制作这个项目时,一路上遇到了几个障碍。其中一些如下:
/sdl-、/GS- 和运行时库设置为 /MT 解决了我崩溃的问题。KMODE_EXCEPTION BSOD,通过设置驱动程序属性 /GS- 解决了这个问题。ModMap - 用于展示 VAD 操纵
SkCrypt - 用于加密
Stealthy Kernel Mode Injector - 作为驱动程序基础
Poseidon - 用于在内核态困住用户模式线程
FACE INJECTOR - 用于 shellcode