首页 文章

Windows 7驱动程序挂钩

提问于
浏览
2

我的问题是关于Windows 7的驱动程序开发 .

我需要拦截对驱动程序的系统调用 . 从理论上讲,在这种情况下,建议创建一个过滤器驱动程序,但在我的情况下,驱动程序不会公开过滤器兼容的接口 . 确切地说,这是一个Vista / 7显示微型端口驱动程序 .

显示驱动程序作为标准WDM驱动程序加载 . 在它的 DriverEntry 中,它应该调用一个 DxgkInitialize 系统例程(由win32k.sys导出) . 我的目标是拦截这个电话 .

谁能建议我任何有用的来源我可以找到有关如何实现这一目标的信息?

胜利的关键可能是用我的函数地址替换驱动程序可执行导入部分中的 DxgkInitialize . 问题是这应该完成 after 加载可执行文件(必要时映射重定位所有导入表条目),但 before 调用驱动程序的入口点 .

我想到了以下几个选项:

  • 将可执行文件映射到系统内存中并手动"prepare"(即执行加载程序的工作) . 然后修补所需的功能并运行入口点 .

  • 经过一些努力 ZwSetSystemInformation 可以用于模块加载(?)

  • 也许修补导出 DxgkInitialize 的模块的 export 部分 . 这样加载器会自动将每个加载的模块重定向到我的手中 .

提前致谢 .

1 回答

  • 0

    你没有提供这方面的商业理由,所以我会犹豫说些苛刻的话 . 但如果涉及挂钩电话,你应该重新考虑你的技术方法 .

    我采取的步骤可能包括:

    • 谁出口 DxgkInitialize ?唐't guess win32k, look it up. (I won' t给你答案) . 也许你可以很容易地挂钩被叫者而不是来电者 .

    • 我是否有任何关于何时加载驱动程序模块但在它被引入之前的回调?查找 PsSetLoadImageNotifyRoutine . 也许它会为你提供适当的时间段来修补驱动程序IAT(如果你不知道导入地址表是什么,重新考虑挂钩) .

    我从评论中看到你主要对“监视展示活动”感兴趣 . 我不确定在您无法完全控制的计算机上是否允许这样做 . 但我们假设这个问题是合法的 .

    根据您想要的分辨率,您不需要驱动程序 . 哎呀,你几乎不需要DLL . 查找Window hooks以获取部分解决方案和辅助功能回调 .

相关问题