标签:pat output windows内核 kernel link pen 阅读 环境 关系
阅读WRK源码,可以更深入的理解Windows内核原理。现将它的编译调试过程记录下来。
(一)准备工具:
(二)配置流程
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内核。
最终呈现的效果如下:
大功告成,可以随心所欲的修改和学习内核代码并进行调试了,慢慢加油吧!
标签:pat output windows内核 kernel link pen 阅读 环境 关系
原文地址:https://www.cnblogs.com/pro-love/p/10895501.html