-
-
kdvm源代码
-
发表于: 2019-8-18 13:43 3981
-
还是逆向kdusb3的时候,无意中翻VirtualBox文档发现一种快速内核调试的办法,详细描述见2.31. Paravirtualized Debugging
说的是Windows8之后带了一个kdvm.dll,可以利用Hyper-V的Guest Debug半虚拟化调试方式,用网络传输数据,速度很快。这个kdvm.dll可以复制到Windows7上使用。(Windows8带的kdnet.dll也能复制到Windows7上用,改动一个字节LoadOptions成员的偏移,然后修正CheckSum。能正常连接Windbg断下来单步调试什么的,但Windows7 Logo变成最大时就会死机,不知道为什么。)
说的是Windows8之后带了一个kdvm.dll,可以利用Hyper-V的Guest Debug半虚拟化调试方式,用网络传输数据,速度很快。这个kdvm.dll可以复制到Windows7上使用。(Windows8带的kdnet.dll也能复制到Windows7上用,改动一个字节LoadOptions成员的偏移,然后修正CheckSum。能正常连接Windbg断下来单步调试什么的,但Windows7 Logo变成最大时就会死机,不知道为什么。)
因为Windows8正式版自带的kdvm.dll太复杂,我逆向的是Developer Preview带的kdvm,特别简单,有个breakin的bug我已经修复,初始化、发包、收包的逻辑参考附件中的源代码。
使用前要先设置VirtualBox
显示半虚拟化支持
VBoxManage.exe showvminfo "win7x86"
有下面这一行就行,如果没有就在虚拟机设置窗口设置一下半虚拟化接口
Effective Paravirt. Provider: HyperV
关闭虚拟机的情况下设置
VBoxManage.exe modifyvm "win7x86" --paravirtdebug "enabled=1,port=50001"
显示半虚拟化支持
VBoxManage.exe showvminfo "win7x86"
有下面这一行就行,如果没有就在虚拟机设置窗口设置一下半虚拟化接口
Effective Paravirt. Provider: HyperV
关闭虚拟机的情况下设置
VBoxManage.exe modifyvm "win7x86" --paravirtdebug "enabled=1,port=50001"
设置被调试电脑
bcdedit /set loadoptions host_ip=5.5.5.5,host_port=50001,encryption_key=9.9.9.9 (这里的IP和key没啥用,随便写,格式合法就行;port也没用,在49151-65536之间就行)
bcdedit /set loadoptions host_ip=5.5.5.5,host_port=50001,encryption_key=9.9.9.9 (这里的IP和key没啥用,随便写,格式合法就行;port也没用,在49151-65536之间就行)
bcdedit /set dbgtransport kdvm.dll
bcdedit /set debug on
bcdedit /set debug on
针对Windows2003
boot.ini文件添加/debug /debugport=COM1 /baudrate=115200 (COM几无所谓,bandrate写不写也没事)
复制kdvm.dll到system32目录下,改名成kdcom.dll (先删除dllcache目录,否则WFP会把文件覆盖回去)
boot.ini文件添加/debug /debugport=COM1 /baudrate=115200 (COM几无所谓,bandrate写不写也没事)
复制kdvm.dll到system32目录下,改名成kdcom.dll (先删除dllcache目录,否则WFP会把文件覆盖回去)
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
赞赏
谁下载
看原图
赞赏
雪币:
留言: