1

我正在寻找模糊虚拟驱动程序,我已经阅读了有关此的其他问题,但它们并没有真正去任何地方。基本上是想看看我是否错过了一个明显的工具,并想知道从 Windows 来宾中模糊 IOCTL 是否可行?或者如果我需要写一个低电平,例如输入/输出?

任何用于在 Windows 客户机中对驱动程序进行模糊测试以打击 hyper-v 或 VMware 的工具

4

1 回答 1

1

有许多方法可以练习虚拟化代码。

首先,当然,如果你在 Windows 上,就是 IOCTL 接口。

那么您应该记住,所有虚拟设备都是由来宾操作系统和主机操作系统中的某些代码以某种方式模拟的。因此,访问输入设备(键盘和鼠标)、视频设备、存储(磁盘)、网卡、通信端口(串行、并行)、标准 PC 设备(PIC、PIT、RTC、DMA)、CPU APIC 等也将练习虚拟化代码。

同样重要的是要记住,各种 PC 设备的虚拟化(除非我们谈论的是在 Windows 中通过 VMBUS 工作的合成设备)是通过拦截、解析和模拟/执行访问设备内存映射缓冲区和寄存器的指令来完成的。输入/输出端口。这为您提供了另一个“界面”。

通过使用它,您不仅可以发现与设备相关的错误,还可以发现与指令相关的错误。如果您对后者感兴趣,您需要很好地了解 x86 CPU 如何在指令级以各种模式(真实、虚拟 8086、受保护、64 位)工作,它如何处理中断和异常以及您还需要知道如何访问这些 PC 设备(如何以及在哪些内存地址和 I/O 端口号)。

顺便说一句,除非您的代码在内核中运行,否则 Windows 不会让您直接访问这些东西。您可能希望拥有一个非 Windows 来宾 VM 来处理此类事情,以避免 Windows 的过度保护功能。寻找边缘情况、异常指令编码(包括无效编码)或用于通常任务的异常指令(例如使用 FPU/MMX/SSE/等或特殊保护模式指令(如 SIDT)访问设备)。思考和调皮。

要考虑的另一件事是竞争条件和计算或 I/O 负载。你也可以在这个方向上探索一些运气。

于 2012-05-10T00:17:06.810 回答