gpt4 book ai didi

c++ - 如何在 Windows 中获取指向硬件驱动程序的指针?

转载 作者:太空宇宙 更新时间:2023-11-04 07:17:51 25 4
gpt4 key购买 nike

我想编写一个程序来监视驱动程序中的内存并每隔一段时间打印内存内容。

但是,我没有在 Windows API 中找到任何似乎允许我获取指向特定驱动程序的指针(句柄)的资源。

我将不胜感激来自用户空间或内核空间的任何回答。

如果您想确切地知道我在做什么,我正在尝试复制 this 的结果纸张,Windows 除外。在获得在基本 Windows 控制台程序中监视缓冲区的能力后,我打算从 GPU 进行监视。

[郑重声明:我是一名研究生,正在将此作为一个暑期项目进行……这是一项道德恶意软件研究。]

============更新==================

这在技术上可能更适合作为答案,但在我有一个可行的解决方案之前并不是真的。

我最初的攻击计划是在键盘驱动程序加载时使用 WinDbg 对其进行动态分析,这样我就可以了解正常的加载/卸载行为。我正在使用 this book 的第 10 章, 指导设置我的测试台,一旦我对键盘结构及其缓冲区有了更多了解,我将向后工作以获取对该结构的永久引用,并了解如何将其传递到图形卡中并使用 DMA 将其作为原始数据进行监控论文是在 Linux 上做的。

最佳答案

你不会通过“获取指向特定驱动程序的指针”来解决这个问题。您需要找到驻留在 USB 驱动程序顶部的键盘驱动程序使用的特定缓冲区。

您必须真正了解 Windows 的键盘和 USB 驱动程序。如果您有 DDK(驱动程序开发工具包)[又名 WDK,Windows 驱动程序工具包],至少其中的一部分可能可用。对于项目的这一部分,您肯定需要图形驱动程序。

您还必须开发一种驱动机制来将任意(内核)内存块映射到您的图形驱动程序——这意味着您需要访问图形驱动程序的源代码。 (理论上,您也许可以在页表中进行破解,但 Windows 本身并不太热衷于软件破坏页表,如果系统是 SMP,您肯定需要非常小心,因为修改SMP 系统中的页表要求您在更新后刷新系统中“其他”CPU(核心)的 TLB)。

对我来说,这似乎是一个相当有趣的项目,但在像 Windows 这样的闭源系统中却是一个非常艰难的项目。至少在 Linux 中,开发人员可以阅读源代码。对于 Windows,大部分相关的源代码是完全不可用的(除非你的学校有 MS 源代码的特殊许可——我认为有一些是这样做的)。

关于c++ - 如何在 Windows 中获取指向硬件驱动程序的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23145050/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com