WRK内核编译调试环境搭建

阅读WRK源码,可以更深入的理解Windows内核原理。现将它的编译调试过程记录下来。

 (一)准备工具:

  1. WRK-v1.2-kernel源码
  2. Windows Server 2003 SP1 (32位)镜像,网址:https://msdn.itellyou.cn/
  3. VMWare WorkStation 8
  4. 最新的Windbg,网址:http://www.windbg.org/
  5. Windows 7 (64位)笔记本电脑

(二)配置流程

1.VMWare安装Windows Server 2003 iso,网上资料比较多,略过。

2.将WRK源码拷贝到windows虚拟机中,方法很多,我这边是通过【文件夹共享】的方式把源码放到C盘根目录【C:\】。关于如何设置共享文件夹,如下图,共享文件夹功能需要安装VMWare Tools。

3.在虚拟机中,将【C:\WRK-v1.2\toos\x86】的路径加到Path系统环境变量中。

打开CMD命令行窗口模式,cd C:\WRK-v1.2\base\ntos文件夹,输入

nmake -nologo x86= 开始编译。

大概2分钟左右,编译完后,会在C:\WRK-v1.2\base\ntos\BUILD\EXE目录下产生内核文件wrkx86.exe

将编译好的wrkx86.exe拷贝到C:\WINDOWS\system32目录下。

4.WRK提供了针对多处理器版本的硬件抽象层HAL支持,为了知道机器实现的HAL类型,

在CMD命令模式下,执行以下命令:

link -dump -all \WINDOWS|system32\hal.dll | findstr pdb

 

在WRK中,根据以下关系选择相应的HAL库:

halacpi.dll -> halacpim.dll

halaacpi.dll->halmacpi.dll

halapic.dll->halmps.dll

由于我已经替换为halmacpi.dll,没替换之前是显示为halaacpi.dll,所以需要将halmacpi.dll拷贝到C:\WINDOWS\system32目录下。

halmacpi.dll位于C:\WRK-v1.2\WS03SP1HALS\x86\halmacpi目录下。

5.在虚拟机设置中添加串口,"Add..."-->“Serial port”-->"Next"-->"output to named pipe"-->名字为"\\.\pipe\com_1",

选择“This end is the server.”,"The other end is an application."

编辑隐藏文件C:\boot.ini,最后一行添加以下内容:

multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="WRK V1.2" /kernel=wrkx86.exe /hal=halmacpi.dll
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="WRK V1.2" /kernel=wrkx86.exe /hal=halmacpi.dll /debug /debugport=com1 /baudrate=115200

6.在windows 7 64笔记本中,Windbg快捷方式后面增加下面参数:,

-k com:port=//./pipe/com_1,baud=11520,pipe

设置Windbg的符号路径和源码路径。

C:\Symbols; SRV*C:\MyLocalSymbols*http://msdl.microsoft.com/download/symbols

同时将wrkx86.pdb,halmacpi.pdb符号文件放到笔记本中C:\Symbols目录下。

7.启动虚拟机,选择调试模式,打开Windbg,Windbg会通过com串口与虚拟机通信,这样就可以调试wrkx86内核。

最终呈现的效果如下:

大功告成,可以随心所欲的修改和学习内核代码并进行调试了,慢慢加油吧!

猜你喜欢

转载自www.cnblogs.com/pro-love/p/10895501.html