SSDTHOOK基本原理与实例介绍.pdfVIP

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
SSDTHOOK基本原理与实例介绍.pdf

南邮王下邀月熊·HOOK学习笔记之Ring0 下SSDTHOOK SSDTHOOK SSDTHOOK SSSSDDTTHHOOOOKK SSDT SSDT SSSSDDTT 基本概念 SSDT 既 System Service Dispath Table。在 Windows NT 下,NT 的 executive (NTOSKRNL.EXE 的一部分)提供了核心系统服务。各种 Win32、OS/2 和 POSIX 的 APIs 都是以 DLL 的形式提供的。这些dll 中的 APIs 转过来调用了 NTexecutive 提供的 服务。尽管调用了相同的系统服务,但由于子系统不同,API 函数的函数名也不同。例如, 要用Win32API 打开一个文件,应用程序会调用 CreateFile(),而要用 POSIXAPI,则应 用程序调用 open() 函数。这两种应用程序最终都会调用 NT executive 中的 NtCreateFile() 系统服务。 用户模式(User mode)的所有调用,如Kernel32,User32.dll, Advapi32.dll 等提供的 API,最终都封装在Ntdll.dll 中,然后通过Int 2E 或SYSENTER 进入到内核模式,通过服务 ID,在System Service Dispatcher Table 中分派系统函数,举个具体的例子,再如下图 南邮王下邀月熊·HOOK学习笔记之Ring0 下SSDTHOOK SSDT 就是一个表,这个表中有内核调用的函数地址。从上图可见,当用户层调用 FindNextFile 函数时,最终会调用内核层的NtQueryDirectoryFile 函数,而这个函数的地址 就在SSDT 表中,如果我们事先把这个地址改成我们特定函数的地址,那么,哈哈。。。。。。。 下来详细了解一下,SSDT 的结构,如下图: KeServiceDescriptorTable:是由内核(Ntoskrnl.exe)导出的一个表,这个表是访问 SSDT 的关键,具体结构是 typedef struct ServiceDescriptorTable { PVOID ServiceTableBase; PVOID ServiceCounterTable(0); unsigned int NumberOfServices; PVOID ParamTableBase; } 其中, 南邮王下邀月熊·HOOK学习笔记之Ring0 下SSDTHOOK ServiceTableBase System Service Dispatch Table 的基地址。 NumberOfServices 由 ServiceTableBase 描述的服务的数目。 ServiceCounterTable 此域用于操作系统的 checked builds,包含着 SSDT 中每个服务被 调用次数的计数器。这个计数器由 INT 2Eh 处理程序 (KiSystemService)更新。 ParamTableBase 包含每个系统服务参数字节数表的基地址。 System Service Dispath Table(SSDT):系统服务分发表,给出了服务函数的地址,每个 地址4子节长。 System Service Parameter Table(SSPT):系统服务参数表,定义了对应函数的参数字节, 每个函数对应一个字节。如在0x804AB3BF 处的函数需0x18 字节的参数。 还有一种这样的表,叫KeServiceDescriptorTableShadow,它主要包含GDI 服务,也 就是我们常用的和窗口,桌面有关的,具体存在于Win32k.sys。在如图: 右侧的服务分发就通过KeServiceDescriptorTableShadow。 HOOK HOOK HHOOOOKK 步骤: (1)改变SSDT 内存的保护: 系统对SSDT 都是只读的,不能写。如果试图去写,等你的就是蓝脸。一般可以修改 内存属性的方法有:通过cr0寄存器及Memory Descriptor List(MDL) (1)改变CR0 寄存器的第1位 Windows 对内存的分配,是采用的分页管理。其中有个CR0 寄存器,如下图: 南邮王下邀月熊·HOOK学习笔记之Ring0 下SSDTHOOK 其中第1 位

文档评论(0)

ziyouzizai + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档