WRK是什么?它是微软提供给各大学用于研究Windows内核的一套开放的源代码。不久前在网上发现了这份宝贝,下载下来,准备学习一下。在进一步探索这套内核前,首先要让它run起来。
我选择的运行环境是VMWare + Windows2003SP1,辅助工具是WinDbg,将内核双机调试环境搭建起来,这部分在网上有很多文章可以搜索到,我就不再做了。
当调试环境搭建好以后,就要编译可以在Windows2003(Win2k3)上面运行的内核了,将WRK-v1.2源代码拷贝到Win2k3的任意目录下,打开控制台窗口,将tools/x86目录加入到Path环境变量里,进入base/ntos目录,执行name -nologo x86=对WRK源代码进行编译,最后在base/ntos/build/exe目录下生成wrkx86.exe及相关文件,如下图所示。
将wrkx86.exe复制到/windows/system32/目录下,使它作为ntoskrnl.exe的替代品。
接着,复制D:/WRK-v1.2/WS03SP1HALS/x86/halmacpi/halmacpi.dll到/Windows/system32/目录下,作为hal.dll的替代品。
修改c:/boot.ini文件,加入一条新的引导项,如下所示。
multi(0)disk(0)rdisk(0)partition(1)/WINDOWS="WRK 1.2 - debug" /kernel=wrkx86.exe /hal=halmacpi.dll /debug /debugport=com1 /baudrate=115200
重新启动系统,并进入新的引导项,这时我们的系统就由刚刚编译成功的内核来引导了。
使用WinDbg对系统进行内核双机调试,设置好正确的sympath和srcpath(注意:wrkx86.pdb和halmacpi.pdb要确保载入),看,Windbg调出源代码供我们跟踪调试了!
这一切都太酷了,不止是调试内核,我们还可以更改内核,重新编译,随心所欲的探索操作系统中最迷人的秘密。我准备好了,一起上路吧!