VirtualKD+Windbg+vmware 极速调试+Windbg下载符号+windows 7本地内核调试
================================Windbg下载符号===================================
打了补丁后经常出现"Your debugger is not using the correct symbols",
使用WINDBG命令下载更新符号文件即可,以下命令不能去掉“.”,打完命令就开始下载了 流量监控可以看到
1: .sympath srv*G:\WinDDK\7600.16385.1\Debuggers\Symbols*http://msdl.microsoft.com/download/symbols
2: !sym noisy
3: .reload
完成下载后
lkd>.reloadConnected to Windows 7 7600 x86 compatible target at (Fri Apr 29 21:42:54.477 2011 (UTC + 8:00)), ptr64 FALSELoading Kernel Symbols.............................................................................................................................................................Loading User SymbolsPEB is paged out (Peb.Ldr = 7ffda00c). Type ".hh dbgerr001" for detailsLoading unloaded module list..lkd> !sym noisynoisy mode - symbol prompts onlkd> !sym noisynoisy mode - symbol prompts onlkd> .sympath srv*G:\WinDDK\7600.16385.1\Debuggers\Symbols*http://msdl.microsoft.com/download/symbols DBGHELP: Symbol Search Path: srv*g:\winddk\7600.16385.1\debuggers\symbols*http://msdl.microsoft.com/download/symbols DBGHELP: Symbol Search Path: srv*g:\winddk\7600.16385.1\debuggers\symbols*http://msdl.microsoft.com/download/symbols Symbol search path is: srv*G:\WinDDK\7600.16385.1\Debuggers\Symbols*http://msdl.microsoft.com/download/symbols Expanded Symbol search path is: srv*g:\winddk\7600.16385.1\debuggers\symbols*http://msdl.microsoft.com/download/symbols WARNING: Whitespace at end of path element
下面在使用命令 dt _eprocess 出来了.本机7600.16695
lkd> dt _eprocessntdll!_EPROCESS
+0x000 Pcb : _KPROCESS
================================极速双机调试VirtualKD+Windbg+vmware==================================
双机调试的时候,不管是Windbg+vmware,还是Windbg+1394,其调试速率都是相对比较低的,有时候执行一条p命令,Windbg的状态都会BUSY..好久...
VirtualKD可以完美的解决这一问题。
VirtualKD主要是用来提高当使用vmware或virtualBox进行windows内核调试时的速率。以前的双机标准调试方法是利用虚拟COM串口,其速率很低。
通常,通过虚拟COM串口进行调试包括以下步骤:
1.windows使用虚拟COM串口和host主机之间进行数据交换;
2.WinDbg/KD使用VM提供的一个PIPE管道来与目标调试机进行通信。
这里最弱的连接是虚拟COM串口,其传输速率仅为:115200 baudrate,等效于115200 bit per second,也就是大约10KB/S的传输速率。VirtualKD取代了虚拟COM串口的功能,极大的提高了数据交换速率,可达6MB/S,但是官方给出的用!irpfind命令测试的话,vmware平台可达150KB/S,不过已经比虚拟COM串口快了15倍了。具体的效果只有在调试过程当中,才会体会到 -:) 事实上,VirtualKD的主要原理是,利用KD的扩展DLL功能,并且向虚拟机patch一个进程,二者通过pipe来进行通信。
使用方法:
1.配置方法可简单,可复杂。简单的方法有自动化,复杂的方法有手动配置。手动方法分为动态patch和静态patch两种,具体的可参考官网。http://virtualkd.sysprogs.org/
2.现在只说明下自动安装的情况,目标机为vmware,若是VirtualBox,则稍有改动
下载VirtualKD安装包,解压后,父目录下virtualKD2.2下有一个target目录,将该target目录copy到虚拟机,点击target/vminstall.exe 运行,然后直接安装即可。如图1所示,vminstall.exe会自动检测虚拟机的内核版本,因为我的目标机是wrk 的内核,故显示:wrk debug【VirtualKD】,当然,你也可以将显示的字符串修改后,再点击安装。
当目标机为XP系统的时候,情况如图2所示:
(图2)
选择install以后,按照提示直接重启。
接着,在host主机端开启vmmon.exe程序即可(记着,vmmon程序要始终开启着),该程序会自动检测到虚拟机当中正在运行的操作系统。简单的设置下windbg的路径和启动方式(自动/手动),那么一切就OK了。虚拟机启动的时候,windbg调试机就自动或手动挂接上了。如图:
其实配置过程非常简单。这里写的比较啰嗦了,主要是自己第一次配置的时候,没好好读说明书,结果手动配置,浪费了时间;后来选择vminstall.exe自动安装,忘记了设置Debugger path..又浪费了时间去检查。
最终的结论是,使用VirtualKD代替了传统的虚拟COM串口以后,调试速度是飞一般的快。
接受新事物总是好的,认知的过程总是有点小曲折,不过目标对象是多么简单!!!
========================windows 7本地内核调试================
使用VistaLKD 如下图