驱动开发:基于MDL映射实现SSDT函数Hook挂钩与摘钩.pdfVIP

  • 3
  • 0
  • 约1.58万字
  • 约 18页
  • 2026-04-27 发布于北京
  • 举报

驱动开发:基于MDL映射实现SSDT函数Hook挂钩与摘钩.pdf

面的文章《驱动开发:内核解析PE结构导出表》中我们封装了两个函数KernelMapFile()函数可用来读

取内核文件,GetAddressFromFunction()函数可用来在导出表中寻找指定函数的导出地址,本章将以此为

基础实现对特定SSDT函数的Hook挂钩操作,与《驱动开发:内核层InlineHook挂钩函数》所使用的挂钩

技术基本一致,不同点是前者使用了CR3的方式改写内存,而今天所讲的是通过MDL映射实现,此外前者挂钩

中所取到的地址是通过GetProcessAddress()取到的动态地址,而今天所使用的方式是通过导出表

寻找。

挂钩的目的就是要为特定函数增加功能,挂钩的实现方式无非就是替换原函数地址,我们以内核函数

ZwQueryDirectoryFile()为例,ZwQueryDirectoryFile例程返回给定文件句柄指定的目录中文件的

各种信息,其微软定义如下;

NTSYINTSTATUSFileHandle,ZwQueryDirectoryFile([in],HANDLE

ApcRoutine,[in,可选]HANDLEApcContext,[in,可选]PIO_APC_ROUTINE

IoStatusBlock,PIO_STATUS_BLOCK[]输出输入,PVDF

文档评论(0)

1亿VIP精品文档

相关文档