我很抱歉我的英语不好。我是逆向工程的初学者。我有这样的问题。我得到了两个文件,一个是驱动程序的 .inf 文件,另一个是驱动程序的 .sys 文件。我的任务是调试这个驱动程序并了解它的功能(驱动程序没有物理设备)。我使用了 2 台机器,一台是主机,实际上是我的真实计算机和 XP 虚拟机(VMware)。我也使用 VirtualKD 和 Windbg。我想在它的 DriverEntry 上设置断点。
当我安装驱动程序时,我注意到它在安装后立即自动运行。所以我不能在 DriverEntry 设置断点。我重新启动虚拟机并使用以下所有命令在 Windbg 中设置断点:
bu Driver!DriverEntry(Driver 是驱动程序的 ClassName,我在 .inf 文件中看到它)
bu Drv!DriverEntry(Drv 是安装时的服务名称)
bu drv!DriverEntry (drv 是 sys 文件名,drv.sys)
但是 Windbg 没有捕捉到任何断点。看到Windbg打印了一些信息,不知道是不是断点抓不到:
* * 驱动程序正在映射它不拥有的物理内存 0064F000->006D0FFF *。这可能会导致内部 CPU 损坏。* 已检查的构建将在内核调试器中停止 * 因此可以完全调试此问题。*
错误:DavReadRegistryValues/RegQueryValueExW(4)。WStatus = 5 错误:DavReadRegistryValues/RegQueryValueExW(5)。WStatus = 5 错误:DavReadRegistryValues/RegQueryValueExW(6)。WStatus = 5 CodeSet_Init:没有 ICU 看门狗!WdUpdateRecoveryState:恢复启用。
我的第二个想法是在安装驱动程序之前回滚我的虚拟机并设置断点。但 Windbg 表示无法解决这些断点。当然,它不能击中任何一个。
我真的不知道如何设置这个驱动程序的条目。请帮我。谢谢你。
P/S:可能这个驱动程序可以通过管道与其他应用程序通信。如何在不影响其通信的情况下对其进行调试?