我的问题是“如何编写没有 WDK 或 DDK 或......的驱动程序?”
我用谷歌搜索了它,但我找不到任何东西......
我只是为了教育目的而做它,我想在 Windows 7 中做它,我知道 c 和汇编(但不是专业的汇编)
非常感谢您的帮助!
为任何操作系统编写驱动程序都需要了解操作系统内核的驱动程序结构和系统调用以及其他行为:这就是 DDK 为您提供的。尝试在没有 DDK 的情况下执行此操作与尝试从头开始重新实现所有内核的驱动程序结构和系统调用相同。
可以想象这是可以做到的:实际上这是不可能的,尤其是对于任何成熟的操作系统,例如 Windows 7。
如果您的意思是使系统能够使用某些硬件的驱动程序-它(实际上)是不可能的。驱动程序必须以某种方式与系统交互,这就是 DDK 的用途。
但是,如果您只想访问您拥有的某些设备(例如,通过 COM、LPT 或 USB 连接),则不需要任何驱动程序,除了用于 COM、LPT 或 USB 的驱动程序(已在系统中)。
我对 Windows 内部一无所知,但 Andrew Tridgell 发表了关于使用 LD_Preload 对 Windows 驱动程序进行逆向工程的演讲。他没有使用任何驱动程序套件或类似的东西
我也对 Window 的动态链接器一无所知(我很确定 Windows 不使用 .so 的),但他在 Linux 下通过虚拟机(他使用虚拟机)运行 Windows 的技术应该可以工作。
您可以在此处查看更多详细信息http://lwn.net/Articles/425714/
对现有驱动程序进行逆向工程应该为您编写自己的驱动程序提供了一个良好的开端。
您需要知道 WDK 或 DDK 做什么并重新创建它。您将把特殊值推入特殊寄存器,响应特殊中断......等等。
你还有很多工作要做。
祝你好运!
如果不使用驱动程序套件,真的没有办法做到这一点 - 微软受美国政府司法部的法律约束,禁止通过特权/未发布的 API 向任何人(甚至他们自己的开发人员)提供操作系统访问权限。
如果您的意思是驱动程序是在特定操作系统(例如 Win7)下工作的驱动程序中的驱动程序,那么您自然需要一个开发工具包(例如 WDK),除非您想重新发明轮子。这就像在不使用框架的情况下开发游戏,或者在不使用 Android SDK 的情况下开发 Android 应用程序。这是可能的,但这是一项非常非常艰巨的任务,可以使用 WDK 等开发工具包轻松完成。编辑:如果你真的想深入研究处理驱动程序的代码,你可以使用 DDK 创建一个驱动程序,然后使用逆向工程来查看底层代码,看看它如何与 CPU 交互以处理硬件.