WRK- 搭建调试环境

以前设置调试过,那时候是在windows 2003 Enterprise系统上,一直没有成功。

今天下载了win 2003 sp1补丁,重新编译、设置,果然就成功了。

看来,WRK一定是要在windows 2003 sp1上才可以(在xp amd64上也可以);

下面是操作步骤和所遇到的问题:

工具: vmware 6.50,windbg 6.11,wrk 1.2

             源代码路径在 D:\WRK\wrk-v1.2

简述调试配置过程如下:

一.编译

编译过程在主机或者虚拟机中都可以进行;但是在主机中编译,windbg会自动搜索加载符号路径和源代码路径;

如果是在虚拟机或者1394连接的被调试机上编译,那么windbg要主动设置符号路径。

1.设置路径

set path = D:\WRK\wrk-v1.2\tools\x86;C:\WINDOWS\system32

2.指定编译目标结构

set arch = x86

3.进入wrk目录

cd D:\WRK\wrk-v1.2\base\ntos

4.编译内核代码,nmake为编译程序

nmake -nologo %arch%=

这里,%arch%= ,其实就是一个替换,等价于 x86=,

命令可以这样写:

nmake -nologo x86=

若要清除中间文件,则加上参数

nmake -nologo x86= clean

dir D:\wrk\WRK-v1.2\base\ntos\BUILD\EXE

//如果发现文件wrkx86.exe, wrkx86.pdb存在,则编译成功

将wrkx86.exe ,halmacpi.dll 拷贝到虚拟机的%windir%/system32下面

二. 更改被调试机的启动项boot.ini

更改后结果如下:

[boot loader]

timeout=15

default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS

[operating systems]

multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="wrk V1.2 debug" /fastdetect /debug /debugport=com_1 /kernel=wrkx86.exe /hal=halacpim.dll

multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows Server 2003, Enterprise" /fastdetect

其实,本质上来说,就是用wrkx86.exe来代替ntoskrnl.exe,halmacpi.dll代替hal.dll,只是替换了一下

微内核,其他的外部组件都使用原系统的。所以,用wrkx86启动以后,系统运行特征和ntoskrnl.exe启动的一样。

三,创建named pipe

add->serial port->output to named pipe->use named pipe :

填写pipe名字,\\.\pipe\com_1

其他选项:

the end is server,the other end is a virtual machine


注意: Windows 2003 中的 要与c:\boot.ini 中的/debugPort 的名字一致!

四,设置windbg的启动参数

创建一个windbg的快捷方式,右键-》属性-》目标,如下设置:

C:\WinWDK\7600.16385.0\Debuggers\windbg.exe -b -k com:pipe,port=\\.\pipe\com_1,baud=115200,reconnect

其中,-b --表示刚连接上目标机就马上中断下来;

-k --表示内核调试

com --设置连接目标机的通信端口(此处为命名管道)和波特率;

还可以跟附加参数:

-y -- 设置符号文件路径

-srcpath --设置源文件路径

五,调试,打开windbg,会提示等待连接;

然后,启动虚拟机或1394连接的目标调试机,选择启动wrk系统;短暂的停留后,windbg就连接上目标系统了,

此时,就可以实现源码级调试wrk内核了。不仅调试,甚至可以重新修改,编译内核,呜呼,爽哉。

随便下个断点:bp nt!ntCreateFile ,bp ntCreateProcess....跟踪调试...


你可能感兴趣的:(OS_MSWRK)