对不起,我的英语不好。我是逆向工程的初学者。我有这样的问题。我得到了两个文件,一个是驱动程序的.inf文件,另一个是驱动程序的.sys文件。我的任务是调试该驱动程序并了解其功能(驱动程序没有物理设备)。我使用两台计算机,一台是主机,实际上是我的真实计算机,一台是XP虚拟机(VMware)。我也使用VirtualKD和Windbg。我想在其DriverEntry处设置断点。

安装驱动程序时,我注意到它在安装后立即自动运行。所以我不能在DriverEntry设置断点。我重新启动了虚拟机,并使用以下所有命令在Windbg中设置了断点:
bu Driver!DriverEntry(驱动程序是驱动程序的ClassName,我在.inf文件中看到了它)

安装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:启用了恢复。


我的第二个想法是在安装驱动程序之前回滚虚拟机并设置断点。但是温德伯格说,它无法解决这些断点。当然,它无法击中任何一个。
我真的不知道如何设置该驱动程序的条目。请帮我。谢谢。
P / S:可能该驱动程序可以通过管道与其他应用通信。如何调试它而不影响其通信?

#1 楼

您可以按照此网站上注释中的步骤进行操作:

http://windbg.info/doc/1-common-cmds.html

这大致等于伊戈尔建议。

评论


我看到他们写了“单击Arguments并输入相关驱动程序的名称”。就我而言,是ClassName,sys文件名还是服务名?

–user1680791
2015年4月10日在14:26

#2 楼

您可以尝试仅在以下条目上取消驱动程序加载:如果所有其他方法都失败,则为原始地址。

评论


您的意思是我需要在内存中的实际地址处设置断点,对吗?但是我怎么知道它的原始地址?

–user1680791
15年4月10日在13:38

#3 楼

(0xcc aka int 3)修补入口点的地址,并加载驱动程序AddrOfEntryPoint通常指向DriverEntry或GsDriverEntry

损坏时,您需要用原始字节替换0xcc并用字节将eip重置回去

use eb <address> originalbyte enter 
r eip = <addresss>


这是beep.sys的入口,它指向Beep!driverEntry

lkd> lm m beep
start    end        module name
f7b0e000 f7b0f080   Beep       (pdb symbols)          f:\symbols\beep.pdbDC45B439164E4C9DEFF20E161DC74C1\beep.pdb
lkd> ? by(beep+3c) 
Evaluate expression: 208 = 000000d0
lkd> ? dwo(beep+dwo(beep+3c)+28)
Evaluate expression: 1644 = 0000066c
lkd> .printf "%y\n" , beep+66c
Beep!DriverEntry (f7b0e66c)
lkd>


评论


更改入口点的字节后,是否必须重新启动虚拟机?就像我说的,每当虚拟机重新启动时,它就会自动运行。

–user1680791
2015年4月10日14:30在

从引导启动到需求启动,驱动程序有各种各样的启动方式,我不能说您的驱动程序启动方式是什么,如果需要的话,您必须确定驱动程序的启动方式并重新加载驱动程序卸载并重新加载dll(如果它是启动启动),则可以看到当前控件集注册表项,并将其修改为dmand start或使用sc.exe查询和修改配置,您可以使用windboot本身重新启动,reboot命令的范围很大找出是否打补丁并重新加载驱动程序会很有趣,您将在调试器中中断

– blabb
2015年4月10日在18:23

@blabb我如何修补入口点的地址???

– AminM
16年1月2日在7:52