wrk源码分析之WinDbg+Bochs调试

上传人:飞*** 文档编号:32662700 上传时间:2018-02-12 格式:DOC 页数:3 大小:31KB
返回 下载 相关 举报
wrk源码分析之WinDbg+Bochs调试_第1页
第1页 / 共3页
wrk源码分析之WinDbg+Bochs调试_第2页
第2页 / 共3页
wrk源码分析之WinDbg+Bochs调试_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《wrk源码分析之WinDbg+Bochs调试》由会员分享,可在线阅读,更多相关《wrk源码分析之WinDbg+Bochs调试(3页珍藏版)》请在金锄头文库上搜索。

1、nwindows 内核 (WRK)编译过程1.用虚拟机 VMware 安装一个 windows server 2003 系统(以下所指系统如未加说明均为该 windows server 2003 虚拟机 )2.将 WRK 源码拷贝到系统下 C 盘,将文件夹取名 wrk(可以任意命名)3.将系统中的环境变量 Path 设置为 C:wrktoolsx86;%path%4.(在命令提示符中输入)cd wrkbasentos5.(在命令提示符中输入)nmake -nologo x86=(内核正在编译.编译完后在 wrkbasentosBUILDEXE 下生成内核文件)6.将 wrkbasentosBU

2、ILDEXE 下的内核文件拷贝到 C:windowssystem32 下7.(在命令提示符中输入)在 C:windowssystem32 路径下输入 link -dump -all hal.dll | findstr pdb 命令 ,查看你的 hal 按照下面对照:halacpi.dll - halacpim.dll ; ACPI PIC-based PC used by VirtualPChalaacpi.dll - halmacpi.dll ; ACPI APIC-based PChalapic.dll - halmps.dll ; MPS8.进入 C:wrkWS03SP1HALSx86

3、目录下,将相应的 hal 文件夹下的文件(2 个)拷贝到 C:windowssystem32 下9.进入 C 盘,将隐藏的文件 boot.ini 打开,在最后一行加入:multi(0)disk(0)rdisk(0)partition(2)WINDOWS=test /kernel=wrkx86.exe /hal=halmacpi.dll10.重新启动,进入新编译好的内核.PS:1.注意第 9 步中,发光的数字2,该数值应与原来最后一句中的一致(否则进入系统时会出现没有找到引导盘)2.如果还是进入不了系统 ,则下载 win2003sp1ch 进行系统升级.wrk 源码分析之 WinDbg+Boch

4、s 调试wrk 源码分析之 WinDbg+Bochs 调试我是因调试 wrk 源代码的需要而开始使用 WinDbg 的。现在感觉调试 windows 内核源代码,WinDbg 是当之无愧的最佳选择了。它不仅有丰富的命令可供内核的调试,而且还可以自己写代码来扩展命令。唯一让人觉得美中不足的是它的脚本实在是弄得太复杂,不过这可以用 WinDbg 的扩展功能来弥补不足,即写一个脚本扩展 DLL 来执行卓如 python 之类的脚本。我自己也写过支持 python 脚本的 WinDbg 扩展,还是挺有用的。在 sourceforge 也有一个叫 PyDbgExt 的开源软件,可以试试看。在 wrk 源

5、代码分析之实验环境中我已经讲了如何来做用于 wrk 源代码调试的 WinPE 的光盘镜像,但都是在 Vmware 或者 powerPC中调试的。有了 WinPE,我们不仅可以在 Bochs 下运行它,还可以调试它,并且如果与WinDbg 相连,就可以实现像其它虚拟机一样的源码极的调试!没想到吧?下面我就来介绍介绍我实现 WinDbg+Bochs 来调试 wrk 源代码的的过程。Bochs,不用说了吧,大名鼎鼎的开源虚拟机软件,可以用于 x86 和 amd64 软件的调试,是一款很好的操作系统调试软件,功能很强大,缺点是比其它虚拟机慢。与其它调试软件合作,如 insight,ddd 等可达到源码

6、级的调试效果。但这些软件都是 linux 下的,虽然有 windows的移植版本,但感觉不太好用,这也是我要介绍 WinDbg+Bochs 调试的原因之一了。好,进行正题,如果你用 Vmware 之类的虚拟机调试过系统软件,那么你知道调试的通信一般是通过串口来进行的。有些软件,像 Vmware 还支持命名管道的通信方式。这样就可以很方便的用 WindbgVmware 来调试了。但是怎样用 WinDbgBochs 实现调试呢?我最先想到的是用虚拟串口软件,如 VSPM,虚拟出两个串口,利用 Bochs 和 WinDbg 的串口调试功能,来进行这两者之间的通信,只可惜试了老半天也没有试出来,Win

7、Dbg 在显示 connecting之后就再也没的反应了。而在 Bochs 中运行的 WinPE 在启动到时多停了一段时间以后又继续执行了。难道真的就没有办法了吗?实在是不甘心啊,这明明是可以实现的功能啊!WinDbg 不是也支持命名管道的调试方式吗,但是 Bochs 不支持,所以想用管道的方式来进行 WinDbg 和 Bochs 之间的通信是行不通的了。但 Bochs 是开源的,在看了 Bochs 的相关串口通信部分的源代码之后,决定自己给 Bochs 加上命名管道通信的功能。好,说干就干,在经过了不断的编译,调试之后,Bochs 上运行的 WinPE 终于可以和 WinDbg 通信了!虽然

8、命名管理通信的代码不会难写,但是要将它加入到 Bochs 中,还要与 WinDbg 通信,却着实费了我一翻功夫,这其中的酸甜苦辣也只有自己能体会到了:从最初的把经测试工作正常的代码加入 Bochs 之后却怎么调也不能使 WinDbg 有反应时的沮丧到突然之间有一次 WinDbg 终于输出了熟悉的信息后的欣喜若狂到一次次的查找有时能通信有时不能通信的困惑再到发现原因居然是 Bochs 的串口输出太快而不是太慢的惊讶,如此这翻心情的风云变幻,恐怕在除编程的过程中会有之外,再难遇到了。呵,这就是让人又爱又恨的编程!要完整源代码的可以留下 email,我会在 附:Bochs 的配置文件。romimag

9、e: file=$BXSHAREBIOS-bochs-latestmegs: 64vgaromimage: file=$BXSHAREVGABIOS-lgpl-latest#WinPE 的光盘镜像ata0-master: type=cdrom, path=T:WinPE2003_SP1.isoboot: cdromlog: bochsout.txt#管道方式com1: enabled=1, mode=pipe, dev=pipecom_1parport1: enable=0vga_update_interval: 300000keyboard_serial_delay: 200keyboard_paste_delay: 100000floppy_command_delay: 50000ips: 4000000mouse: enabled=0private_colormap: enabled=0fullscreen: enabled=0screenmode: name=samplei440fxsupport: enabled=0

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号