初窥Windows内核——学习Windows Research Kernel手记(一)

 

小序

 

当初只是抱着试一试的想法去找老师的,结果就这么开始了。从一开始拿到Windows Research Kernel(以后简称WRK)我就知道这些材料,包括源码、文档、实例范例等等,都是十分难得的。使用是有限制的,只能用于教学研究,微软对于这些是有版权的,我们都要遵循其协议的要求种种。其实老师也说过,他自己对这个版权上的事也不是很清楚。那我当然就更不清楚了。大概知道不能用于商业,最终解释权归微软所有。

在现在这个知识爆炸的时代,尤其是计算机知识泛滥的时代,真要说想学些东西,但是找不到相关资料的真是没有几个。那么Windows内核原理方面的就算是一个了。一切都是由于Windows是一个不开源的操作系统。一直以来对他的学习只能通过微软给的开发文档,或者爱好者们通过反汇编,在那晦涩的汇编代码中揣测Windows的真正面貌。而今天,我有幸得到了这个机会,真是感觉幸运之至啊。也从此决心要学出点东西来,不然都浪费了这么好的资源了。

概要

这一阶段的探索目标是编写一个系统调用,将进程的运行时状态保存在文件中,必要的时候可以还原回去并继续执行。

具体到我,我的任务就是重点记录和还原进程执行时的寄存器状态、用户栈、用户堆、数据段、以及页表的内容。

 

STEP  0——搭建一个实验平台

 

一切都要从最简单的做起。首先是搭建实验的平台。我们的实验平台是这样的,在主机(本人是Windows Vista操作系统)修改编译WRK内核,在虚拟机Virtual PC 2007中的WRK Windows Server 2003 SP1系统远程调试内核。调试工具是WinDbg

搭建平台也不是那么一帆风顺的,也是费了一番周折才装好的。我只能感叹万事开头难啊。安装好的WRK有好多文件夹,其中base/ntos文件夹最为重要,因为里面就是WRK的源码了,编译也就是编译这个文件夹。微软的东西做的就是力求方便,这个也不例外。整个编译过程就一条命令,而且自动判断那个文件修改过,仅仅编译这部分。调试的时候就进到虚拟机,通过共享主机的文件的方式把编译出来的内核映像文件wrkx86.exe替换掉虚拟机中windows/system32中的同名文件,以调试模式重启就好了,这样就可以进行调试了。对于WinDbg的使用,我也只是停留在初级阶段,刚开始只会用DbgPrint这一个,后来通过上网学习才回了点命令和跟踪调试的技术,但是依然很不熟练。

 

待续。。。

 

 

你可能感兴趣的:(windows,虚拟机,汇编,文档,微软,平台)