设为首页  
联系我们  
加入收藏  
网页制作 冲浪宝典 图形图像 操作系统 软件教学 编程开发 认证考试 安全技术 站长专区 文学驿站 娱乐天地 游戏天地 办公软件
文章搜索
您的位置: 首页 >> 文章首页 >> 操作系统 >> Windows 2000 >> Windows服务调用机制
精品推荐
Windows 2000点击TOP10
·Windows NT/2000/XP 出现蓝屏并显示“STOP 0x0000007f”错误
·Win 2000密码破解
·Windows2000系统优化指南
·如何开启 Windows 2000 Server 上的远程桌面功能
·Windows2000操作系统中也用上Msconfig
·为Win2000添加五笔字型输入法
·Windows2000系统如何找回丢失的管理员密码
·[DIY]Windows2000三合一光盘
·Windows2000漏洞集锦
·Windows2000中如何配置JDK
操作系统点击TOP10
·Windows Vista完全硬盘安装法
·Windows Vista 激活不求人
·Windows Vista局域网网络连接设置
·Windows Vista系统动态桌面截图欣赏
·Windows XP中磁盘的分区应用
·Windows NT/2000/XP 出现蓝屏并显示“STOP 0x0000007f”错误
·让Windows XP变身Vista
·一招搞定Vista系统软件不兼容问题
·教你如何正确配置和优化Windows Vista
·只转两圈 加快Windows XP启动速度
精选专题

Windows服务调用机制

作者: 来源:网络文章 时间:2005-12-19 16:14:50

Windows服务调用机制(3) 五、Windows 2000系统服务调用类型


  在Windows 2000中默认存在两个系统服务调度表,它们对应了两类不同的系统服务。这两个系统服务调度表分别是:KeServiceDescriptorTable和KeServiceDescriptorTableShadow。

  Windows 2000执行程序服务对应于NTDLL.dll为我们提供的系统服务调用。子系统通过调用NTDLL.dll中的函数接口来实现它们需要的功能。系统服务调度表KeServiceDescriptorTable定义了在ntoskrln.exe中实现的系统服务,通常在kernel32.dll/advapi32.dll中提供的函数接口均是调用的这个系统服务调度表中。

  同时存在于Windows 2000操作系统中还有在Win32k.sys中实现的相关Win32USER和GDI函数,它们是属于另一类系统服务调用。与之对应的系统服务调度表为KeServiceDescriptorTableShadow,它提供了内核模式实现的USER和GDI服务。函数KeAddSystemServiceTable允许Win32.sys和其他设备驱动程序添加系统服务表。除了Win32k.sys服务表外,使用KeAddSystemServiceTable添加的服务表会被同时复制到KeServiceDescriptorTable和KeServiceDescriptorTableShadow中去。

  我们可以看出这两类函数实现在服务调度上的区别:Win32内核API经过Kernel32.dll/advapi32.dll进入NTDLL.dll后使用int 0x2e中断进入内核,最后在Ntoskrnl.exe中实现了真正的函数调用;Win32 USER/GDI API直接通过User32.dll/Gdi32.dll进入了内核,最后却是在Win32k.sys中实现了真正的函数调用。在此我们只讨论与NTDLL.dll相关的函数,也就是我们例子中处理的函数。

  六、Hook系统服务调用的作用

  钩子(Hooking)是一种拦截/监听可执行代码在执行过程中相关信息的一种通用机制。它使我们了解系统内部结构,运作机制甚至修改系统行为的想法成为可能。在一个像M$存在的世界里,Windows的很多内部信息我们都是无法得知的,因为Windows不是Linux,但这并不意味着我们就此放弃!只要开动你的大脑,很多事情都会变成可能。

  1. 事件追踪

  你想知道Windows在什么时候会打开一个进程吗?你想知道Windows任务管理器中进程相关信息的获取调用了哪些函数吗?我们都可以使用Hook技术来实现这些你想要的信息。我们可以追踪ZwOpenProcess的执行情况,我们同样也可以追踪ZwQueryInformationProcess的执行情况,包括传递的参数和返回的结果。大家可以看到本文相关的程序T-ProcMon就是一个进程监视工具,它会追踪系统中与进程相关的各种信息。在某些我们期望的事件发生时,程序会通知用户发生了什么,这也是我们期望看到的结果。

  2. 修改系统行为

  操作系统为我们提供了一些通用的功能,如查询系统进程信息ZwQuerySystemInformation(SystemInformationClass == 5),它会返回系统中当前所有进程/线程的相关信息。如果我们希望隐藏一些特殊的进程那该怎么办呢?那就是修改系统服务调用,也就是修改ZwQuerySystemInformation的行为。在查询系统进程时,系统会返回一个进程信息队列,每个单元对应一个进程,如果我们想隐藏其中的某个进程,只须修改队列中的某些数据,然后返回给上层函数,它们就不会发现Xxx.exe进程存在于系统之中了。  

  3. 研究系统内部机制

  微软提供的Windows操作系统是一个“封闭”的系统,很多内部资料都没有公布,我们可以通过Hook技术来探测系统的内部数据结构和运行机制,学习操作系统内部的操作方式。基于Hook的Windows内核黑客技术(Kernel Hacking)是非常之流行和有效,在我们探测系统的一些未公开,未文档化的技术细节时我们都可以使用钩子技术。

  4. 其他

  其他如我们要调试一个非常麻烦的程序时就可以使用Hook技术,这样就可以更好的帮助我们追踪系统的行动,更好的了解程序内部的执行过程。同样,为了获取系统的一些特殊性能数据,我们也可以在特定的情况下使用Hook技术。

  七、Hook系统服务调用的实现


共6页 9 7 [1] [2] [3] [4] [5] [68 :>

Windows服务调用机制 相关文章:
Windows服务调用机制 相关软件:
特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
转载请注明来源:http://www.xgdown.com