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

C++ 如何在Windows中获取指向硬件驱动程序的指针?,c++,c,winapi,malware,C++,C,Winapi,Malware,我想写一个程序来监控驱动程序中的内存,并每隔一段时间打印内存内容 然而,我在WindowsAPI中找不到任何可以让我抓取指向特定驱动程序的指针(句柄)的资源 无论是从用户空间还是内核空间,我都希望得到任何答案 如果你想确切地知道我在做什么,我正在尝试从纸上复制结果,除了在Windows上。在我获得了在基本windows控制台程序中监视缓冲区的能力之后,我打算从GPU进行监视 [作为记录:我是一名研究生,将此作为暑期项目……这是道德恶意软件研究。] ========================

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

然而,我在WindowsAPI中找不到任何可以让我抓取指向特定驱动程序的指针(句柄)的资源

无论是从用户空间还是内核空间,我都希望得到任何答案

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

[作为记录:我是一名研究生,将此作为暑期项目……这是道德恶意软件研究。]

======================================================================================================

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


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

通过“抓取指向特定驱动程序的指针”无法解决此问题。您需要找到位于USB驱动程序顶部的键盘驱动程序使用的特定缓冲区

你将不得不实际摸索Windows的键盘和USB驱动程序。如果您有一个DDK(驱动程序开发工具包)[aka WDK,Windows驱动程序工具包],那么其中至少有一部分可能是可用的。你肯定需要一个图形驱动程序的这一部分的项目

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


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

通过“抓取指向特定驱动程序的指针”无法解决此问题。您需要找到位于USB驱动程序顶部的键盘驱动程序使用的特定缓冲区

你将不得不实际摸索Windows的键盘和USB驱动程序。如果您有一个DDK(驱动程序开发工具包)[aka WDK,Windows驱动程序工具包],那么其中至少有一部分可能是可用的。你肯定需要一个图形驱动程序的这一部分的项目

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


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

通过“抓取指向特定驱动程序的指针”无法解决此问题。您需要找到位于USB驱动程序顶部的键盘驱动程序使用的特定缓冲区

你将不得不实际摸索Windows的键盘和USB驱动程序。如果您有一个DDK(驱动程序开发工具包)[aka WDK,Windows驱动程序工具包],那么其中至少有一部分可能是可用的。你肯定需要一个图形驱动程序的这一部分的项目

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


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

通过“抓取指向特定驱动程序的指针”无法解决此问题。您需要找到位于USB驱动程序顶部的键盘驱动程序使用的特定缓冲区

你将不得不实际摸索Windows的键盘和USB驱动程序。如果您有一个DDK(驱动程序开发工具包)[aka WDK,Windows驱动程序工具包],那么其中至少有一部分可能是可用的。你肯定需要一个图形驱动程序的这一部分的项目

你还必须做些准备工作