认识WRK

来源:互联网 发布:xp下查找网络打印机 编辑:程序博客网 时间:2024/05/21 22:49

WRK 是微软于 2006 年针对教育和学术界开放的 Windows 内核的部分源码,而WRK编译后所得的结果是一个内核模块文件,即ntoskrnl.exe。所以,WRK是ntoskrnl.exe的部分实现。

因此,如果我们想了解ntoskrnl.exe中某个内核函数的实现细节,除了通过逆向查看该函数的汇编代码之外,我们有更好的选择——如果WRK中有的话,直接到WRK中查看该函数的实现代码,如,ZwOpenProcess。

注意:因为Nt*函数才是真正的实现函数,而Zw*函数最终也是调用的Nt*函数。所以,WRK中并没有给出Zw*函数的实现代码,仅提供了Nt*开头函数的代码。如,ZwOpenProcess在WRK中是找不到的,而NtOpenProcess在WRK中能找到具体实现代码。


内核文件有ntoskrnl.exe, ntkrnlpa.exe, ntkrnlmp.exe, ntkrpamp.exe。

它们是同一套源代码根据编译选项的不同而编译出的四个可执行文件,分别用于:

ntoskrnl - 单处理器,不支持PAE(物理地址扩展)  
ntkrnlpa - 单处理器,支持PAE  
ntkrnlmp - 多处理器,不支持PAE  
ntkrpamp - 多处理器,支持PAE  
在Vista之前,安装程序会在安装时根据系统的配置选择两个多处理器或者两个单处理器的版本复制到目标系统中。从Vista开始,会统一使用多处理器版本,因为多处理器版本运行在单处理器上只是效率稍微低一些。


WRK中目录结构:

build

WRK 只公开了部分源代码,那些未公开的则以二进制目标代码的形式存在于这个目录下。

cache

缓存管理器的实现的源文件。

config

注册表的实现的源文件。

dbgk

调试子系统的内核模式部分的源文件。

ex

执行体层函数(内核堆 , 同步 , 定时器等)的源文件。

fsrtl

文件系统运行库的源文件。

fstub

文件系统引导接口。

io

I/O 管理器,不包括即插即用管理器和电源管理器部分。

ke

(微)内核,包括线程调度器,CPU 管理以及底层的同步语义

lpc

本地过程调用 (LPC) 机制的实现。

mm

内存管理器。

ob

内核对象管理器。

perf

内核的性能日志记录功能。

ps

进程和线程。

se

安全引用监视器。

wmi

Windows 管理规范。

inc

仅适用于 NTOS 部分的包含文件。

raw

RAW 文件系统驱动程序的实现的源文件。

rtl

内核运行时库支持。

init

内核启动部分的代码。

vdm

虚拟 DOS 机。

verifier

驱动程序检验器。



更多关于WRK的认识,请参考一下连接:

http://blog.csdn.net/evi10r/article/details/6918552

http://www.ibeifeng.com/tech.php?id=57724

0 0
原创粉丝点击