如何将摘除InlineHook内核钩子的驱动开发过程转化为一个长尾?

2026-04-12 02:530阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计2688个文字,预计阅读时间需要11分钟。

如何将摘除InlineHook内核钩子的驱动开发过程转化为一个长尾?

在笔者的文章《驱动开发:内核层InlineHook钩子函数》中,介绍了通过替换函数、头部代码的方式实现Hook,并对ARK工具实现扫描与摘除InlineHook进行了说明。其中,InlineHook钩子也是实现基本功能的基础。

在笔者上一篇文章《驱动开发:内核层InlineHook挂钩函数》中介绍了通过替换函数头部代码的方式实现Hook挂钩,对于ARK工具来说实现扫描与摘除InlineHook钩子也是最基本的功能,此类功能的实现一般可在应用层进行,而驱动层只需要保留一个读写字节的函数即可,将复杂的流程放在应用层实现是一个非常明智的选择,与《驱动开发:内核实现进程反汇编》中所使用的读写驱动基本一致,本篇文章中的驱动只保留两个功能,控制信号IOCTL_GET_CUR_CODE用于读取函数的前16个字节的内存,信号IOCTL_SET_ORI_CODE则用于设置前16个字节的内存。

之所以是前16个字节是因为一般的内联Hook只需要使用两条指令就可实现劫持,如下是通用ARK工具扫描到的被挂钩函数的样子。

阅读全文

本文共计2688个文字,预计阅读时间需要11分钟。

如何将摘除InlineHook内核钩子的驱动开发过程转化为一个长尾?

在笔者的文章《驱动开发:内核层InlineHook钩子函数》中,介绍了通过替换函数、头部代码的方式实现Hook,并对ARK工具实现扫描与摘除InlineHook进行了说明。其中,InlineHook钩子也是实现基本功能的基础。

在笔者上一篇文章《驱动开发:内核层InlineHook挂钩函数》中介绍了通过替换函数头部代码的方式实现Hook挂钩,对于ARK工具来说实现扫描与摘除InlineHook钩子也是最基本的功能,此类功能的实现一般可在应用层进行,而驱动层只需要保留一个读写字节的函数即可,将复杂的流程放在应用层实现是一个非常明智的选择,与《驱动开发:内核实现进程反汇编》中所使用的读写驱动基本一致,本篇文章中的驱动只保留两个功能,控制信号IOCTL_GET_CUR_CODE用于读取函数的前16个字节的内存,信号IOCTL_SET_ORI_CODE则用于设置前16个字节的内存。

之所以是前16个字节是因为一般的内联Hook只需要使用两条指令就可实现劫持,如下是通用ARK工具扫描到的被挂钩函数的样子。

阅读全文