windows系统调用_第1页
windows系统调用_第2页
windows系统调用_第3页
windows系统调用_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Windows系统调用浅析默认分类 2009-11-05 17:39:15 阅读390 评论0   字号:大中小 订阅        网上关于Linux系统调用的资料很多了,介绍都很详细。而最近需要了解下Windows系统调用,发现Windows的系统调用机制比Linux的复杂很多,可能是初次接触比较陌生的缘故。我在此只是进行简单的分析,基本上都是查看别人的资料,再加上自己的理解。(说明:毛得操老师写的关于Windows内核源码情景分析是本很好的参考资料,建议大家有兴趣的看看)  &#

2、160;    X86体系结构提供了4个特权级(ring 0, 1, 2, 3),Windows只使用了其中的2个特权级,分别是ring 0(内核空间),ring 3(用户空间)。在默认情况下,Windows将低2GB的地址空间。 与进程相关的结构主要包括进程块(EPROCESS)、进程环境块(PEB)、线程块(ETHREAD)、线程环境块(TEB),它们之间的关系如下图: (1)    进程块(EPROCESS):每个Windows进程通过进程块来描述,其中包含于进程相关的属性,同时还指向其他的数据结构

3、。(2)    进程环境块(PEB):存放进程信息,每个进程都有自己的PEB信息。位于用户地址空间。在Win 2000下,进程环境块的地址对于每个进程来说是固定的,在0x7FFDF000处,这是用户地址空间,所以程序能够直接访问。准确的PEB地址应从系统的EPROCESS结构的0x1b0偏移处获得,但由于EPROCESS在系统地址空间,访问这个结构需要有ring0的权限。还可以通过TEB结构的偏移0x30处获得PEB的位置,FS段寄存器指向当前的TEB结构:mov eax,fs:0x30mov PEB,eax在用户态下WinDbg中可用命令$proc取得

4、PEB地址。(3)    线程块(ETHREAD):Windows线程通过线程执行体来描述,除了TEB之外的结构都位于内核地址空间。(4)    线程环境块(TEB):系统在此TEB中保存频繁使用的线程相关的数据。位于用户地址空间,在比PEB 所在地址低的地方。进程中的每个线程都有自己的一个TEB。一个进程的所有TEB都以堆栈的方式,存放在从0x7FFDE000开始的线性内存中,每4KB为一个完整的TEB,不过该内存区域是向下扩展的。在用户模式下,当前线程的TEB位于独立的4KB段,可通过CPU的FS寄存器来访问该

5、段,一般存储在FS:0。在用户态下WinDbg中可用命令$thread取得TEB地址。FS寄存器保存了TEB结构的指针,TEB结构如下: 位置长度描述FS:004当前结构化异常处理帧  FS:20h4进程IDFS:24h4线程ID  FS:30h4PEB的线性地址     在Intel x86架构上的Windows系列,Windows 2000通过执行int 0x2e来激活系统调用;而Windows 2003/XP通过执行sysenter(Intel)/syscall(AMD)指令来进行系统调用

6、。Windows操作系统以动态链接库的方式导出大量API供应用程序调用,主要分为2类:(1)    运行在用户态,可供应用程序直接调用。(2)    运行在内核态,需要陷入(trap)才能调用,称为Native API,在ntoskrnl.exe中实现,通过ntdll.dll进行调用。 在进行系统调用之前,EAX中保存系统调用服务ID,而EDX中保存了调用参数的堆栈指针,然后引发INT 2Eh中断。(1)Windows 2000中的系统调用执行过程:ServiceId:请求的中断服务IDParameterTable:中断服务对应的参数ParamTableBytes:参数个数信息添加Hook的过程:先在系统中找到IDT,然后确定2Eh在IDT中的地址,最后将用户定义的函数地址去取代它。当用户

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论