[note]chapter2--系统结构
这一章讲述的比较宏观,没太多细节可以分析的.
需要注意的几个地方.
1.Windows子系统
Csrss.exe包含对下列的支持:
@ 控制台窗口
@ 创建或删除进程和线程
@ 对16位虚拟DOS机进程的一部分支持.
关于Csrss.exe以后再详细剖析了.附上盟主的一篇文章<<详解进程创建中与csrss的通信流程>>
Win32k.sys包含:
@ 窗口管理器
@ 图形设备接口
关于Win32k.sys的剖析也推后之.
2,Ntdll.dll
以前一直认为ntdll.dll只包含了一些与系统服务相关的函数,这种错误的理解会让人以为
SSDT表中的函数,与ntdll.dll序号,函数是一一对应(描述不清楚,看图,盗版的xp sp3,其他版本的必然已经改变了..)
刚才以为,通过解析ntdll.dll的导出表,就能获得完整的SSDT函数表名和序号,仔细对比了下,还是不行的..呵呵..
还是通过内核变量来导出吧~..
其实不然,它包含两种类型的函数:
@ 一种就是刚才所说的,与系统服务相关的,分发Stub.它们会调用windows执行体的系统服务.
后面讲述SSDT和Shadow SSDT的时候再来分析之.
@ 内部支持函数,供子系统,子系统DLL,以及其他的原生映像文件使用.
关于这些函数,可以看一看ntdll.dll的导出表,也可以参考<<inside the native api>>这一文.
3.System进程和系统线程.
这个都说无益,还是参考具体的代码吧.
PsCreateSystemThread().
在默认情况下,系统线程是属于System进程的,但是,一个设备驱动程序可以在任何的进程中,创建系统线程.
例如,Win32k.sys在Csrss.exe中创建系统线程,因而这些线程可以很容易的访问该进程用户模式的空间中的数据.
4.<<inside native application>>
这是一篇很有意思的文章,值得仔细研读,可惜相关例子和代码不多...