




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
以 windows2000 为例的 NT 架构的系统内置三个子系统来支持 WIN32 POSIX 和 OS 2 应 用程序 Win32 子系统是最流行的一个 win32 接口实际上是做为整个系统的基础结构来实现的 win32 子系统包含一个名为 Kernel32 dll 的系统模块 但这并不是实际的操作系统内和 它 只是 win32 子系统的 一个基本组建 Kernel mode 模块为于系统跟底层 在那里子系统是不可见的 该接口提供了 Native API 接 口 win32 子系统和 Native API 之间的关系可以由 win32 核心模块与 Winodws 2000 内核模块之 间的依赖关系很好的解释 Kernel32 dll 导出到的 win32 API 函数 DeviceIoControl 最终会调用由 ntdll dll 导出的 NtDeviceIoControlFile 通过反汇编会看到 NtDeviceIoControlFile Moveax 38h Lea edx esp 4 Int2eH Ret 28h 首先 CPU 寄存器 EAX 被装入一个 魔术 数字 0 x38 这是一个分派 ID 接下来寄存器 EDX 被设置指向堆栈中的某处 其 地址为堆栈指针 ESP 加 4 因此 EDX 将指向堆栈中的返回地址的后面 该返回制定在 进入 NtDeviceIoControlFile 时被立 即保存下来 显而意见 EDX 指向的位置是用来临时存放传递进来的参数的 接下来 的 int 2eh 该指令将跳转到中断描述 符表 IDT 的 0 x2e 位置上存放的中断处理例程 Win2000 的 INT 2eh 接口要比一个 简单的 API 调用有用 分配器利用 它从用户模式进入内核模式 Windows2000 Native API 由 248 个函数组成 这些函数都采用这中方式进入内核 INT 2eH 随同传入 CPU 寄存器 EAX 和 EDX 的俩个参数一起被调用 处理 INT 2eh 的 代码必须确定每个调用将分配到那个 函数 这就是提供分派 ID 的原因 位于 ntoskrnl exe 中的中断处理例程将 EXE 中的数 值作为一个索引来查询一个特定的表 这个表称作系统服务表 System Service Table 该表对应的 C 结构体 SYSTEM SERVICE TABLE 的 struct 在该列表中 还包含 SERVICE DESCRIPTOR TABLEd 的 struct 该结构共有四个 SST 类的数组 typedef NTSTATUS NTAPI NTPROC typedef NTPROC PNTPROC define NTPROC sizeof NTPROC typedef struct SYSTEM SERVICE TABLE PNTPROC ServiceTable array of entry points PDWORDCounterTable array of usage counters DWORD ServiceLimit Number of table entries PBYTEArgumentTable array of bye counts SYSTEM SERVICE TABLE PSYSTEM SERVICE TABLE PPSYSTEM SERVICE TABLE typedef struct SERVICE DESCRIPTOR TABLE SYSTEM SERVICE TABLE ntoskrnl ntoskrnl exe native api SYSTEM SERVICE TABLE win32k win32k sys gui user support SYSTEM SERVICE TABLE table3 not used SYSTEM SERVICE TABLE table4 SYSTEM DESCRIPTOR TABLE PSYSTEM DESCRIPTOR TABLE PPSYSTEM DESCRIPTOR TABLE 从 SDT 的结构上可以看出来该结构的头俩个数组保留给了 ntoskrnl exe 和 win32 子系 统中的内核模式部分 来 gdi32 dll 和 user32 dll 的调用都通过 win32k 的系统服务表 SST 进行分派 Ntolkrnl exe 导出了一个指针 符号为 KeServiceDescriptorTable z 指向其主服务描述表 Main SDT 内核还维护了一 个替代的 SDT 其名 称为 KeServiceDescriptorTableShadow 但这个 SDT 并没有被导出 从处于内核模式的模块中访问 SDT 非长容易 import SDT pointer Extern PSERVICE DESCRIPTOR TABLE KeServiceDescriptorTable or Create SDT reference PSERVICE DESCRIPT TABLE psdt KeServiceDescriptorTable SDT 中的每个 SST 的 ServiceTable 成员都是一个指针 指向一个由函数指针组成数组 此函数指针的类型为 NTPROC 这为 Native API 提供了占位符 Native API 函数通常返回一个 NTSTATUS 类型的代码并且使用 NTAPI 调用方式即 stdcall ServiceLimit 成员保存在 ServiceTable 数组中发现的入口地址的个数 ArgumentTable 成员是一个 BYTE 类型的数组 它和 SerivceTable 所值的数组一一对应 并给出了其中每个函数指针所 需要的参数在调用者的堆栈中的字节数 此信息随 EDX 寄存器的值一起使用 INT 2eh 中断的处理例程 隐藏在内核模式中的 INT 2eh 中断的处理例程为 KiSystemSerice 该函数将做如下操作 从当前线程的控制块中检索 SDT 指针 通过测试 EAX 寄存器中的分派 ID 的第 12 14 位来确定使用 SDT 中的那个 SST ID 位于 0 x0000 0 x0FFF 选择 ntoskrnl 表 ID 位于 0 x1000 0 x1FFF win32k 表 ID 位于 0X2000 2FFF 和 0 x3000 0 x3FFF 由 SDT 的 table3 和 table4 保留 超过 0 x3FFF 在分派前多余的位将被屏蔽掉 通过检查分派 ID 的 0 到 11 位来确定该 ID 在所选的 SST 中对于的 ServiceLimit 成员 如果 ID 超出范围将返回 错误代码 STATUS INVALID SYSTEM SERVICE 在一个未使用的 SST 中 ServiceLimit 成员始终是 0 通过检查 EDX 中保存的参数堆栈指针来取得 MmUserProbeAddress 的值 这 是由 ntoskrnl exe 导出的一个公共 便利 参数指针通常会与 0 x7FFF0000 进行比较 如果没有低于该地址 那 么将返回 STATUS ACCESS VIOLATION 根据在 SST 的 ArgumentTable 中查找到的参数堆栈的字节数 将所有函数参 数从调用者堆栈中复制到当前的内核堆栈中 在从服务调用中返回后 将控制权传递给内部函数 kiServiceExit INT 2eh 中断的处理例程不是使用全局的 SDT 即 KeServiceDescriptorTable 而是使 用线程专属的指 针替代之 显然 每个线程可以拥有不
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 料理机日常保养手册
- 共享电动车利用率预案
- 心理学在新媒体传播中的应用
- 高校心理咨询服务流程优化建议
- 汽车制造流程质量控制技术规范
- 电焊工操作技能培训标准教材
- 2023年建筑施工项目预算编制规范
- 2025年死因监测报告管理培训考核试题附答案
- 餐饮连锁品牌营销策划与实施报告
- 外墙保温工程质量验收报告
- DB11T 065-2022 电气防火检测技术规范
- 人教版八年级历史上册第一次月考试题(附答案)第一单元
- 基本不等式课件-高三数学一轮复习
- DL∕T 2568-2022 电力行业数字化审计平台功能构件与技术要求
- 部编人教版《道德与法治》六年级上册第9课《知法守法 依法维权》精美课件(第1课时)
- 消防喷淋系统设计合同范本
- DB32-T 4757-2024 连栋塑料薄膜温室建造技术规范
- 2024年四川省广安市中考数学试题(含答案逐题解析)
- 山西省太原三十七中2023-2024学年九年级上学期月考物理试卷(10月份)
- (幻灯片)世界各国国旗大全中文
- 物流地产发展前景分析
评论
0/150
提交评论