0%
毅种循环

模块 58 - API Hooking - 简介

恶意软件开发课程 - API Hooking - 简介


模块 58 - API Hooking - 简介#

[!IMPORTANT] 本知识库声明

本知识库由本人整理自互联网 MalDev Academy 泄露资源,并由本人手动翻译为中文,过程中增加了大量关键技术提示实践心得

  1. 内容完整性:并未修改任何核心代码与技术逻辑,仅做汉化与注释加强。
  2. 版权归属:原始知识产权归原作者/官方所有。
  3. 支持正版:本仓库仅供内部学习交流,如果您有经济能力,请务必支持正版课程
  4. 权利申诉:如相关内容侵犯了您的权益,请联系我,我将立即核实并删除。

API Hooking - 简介#

简介#

API Hooking (API 钩子) 是一种用于拦截和修改 API 函数行为的技术。这在调试、逆向工程和游戏作弊中非常常见。API Hooking 的核心是将 API 函数的原始实现替换为自定义版本,从而在调用原始函数之前或之后执行一些额外的操作。这允许我们在不修改程序源代码的情况下,改变程序的运行逻辑。

跳板 (Trampolines)#

实现 API Hooking 的经典方法是通过 跳板 (Trampolines)。跳板是一段用于通过跳转到进程地址空间内的另一个特定地址来改变代码执行路径的 Shellcode。

我们会将跳板 Shellcode 插入到函数的开头,从而实现“挂钩”。当被挂钩的函数被调用时,跳板 Shellcode 会首先触发,执行流被重定向到另一个地址,从而导致执行了不同的函数逻辑。

图片
图片

内联挂钩 (Inline Hooking)#

内联挂钩 (Inline Hooking) 是执行 API Hooking 的另一种方法,其运作方式与基于跳板的挂钩类似。区别在于,内联挂钩通常会将执行权返回给合法的原始函数,从而允许正常的执行流程继续下去。虽然实现起来更复杂,且可能更难维护,但内联挂钩更加高效。

图片
图片

💡 初学者提示:谁在用 Hook?

你电脑里的杀毒软件(EDR/AV)是 API Hooking 的忠实用户。它们会监测你进程里常用的函数(如 CreateRemoteThread),就像保安在各个路口装了监控探头。一旦你试图执行敏感操作,Hook 就会拦截请求并上报给安全引擎进行深度扫描。

为什么需要 API Hooking?#

虽然 API Hooking 主要用于恶意软件分析和调试过程,但在恶意软件开发中,它也有以下用途:

  1. 收集敏感信息:例如拦截登录 API 以窃取凭据。
  2. 修改函数逻辑:出于恶意目的拦截并修改函数参数或返回值。
  3. 绕过安全防御:通过改变操作系统或程序的行为来绕过监管(如绕过 AMSI、静默 ETW 等)。

如何实现挂钩?#

实现 API Hooking 有很多种方法:

  • 开源库:例如微软的 Detours 库和著名的 MinHook
  • 原生 API:Windows 本身也提供了一些专门用于挂钩的 API(虽然功能相对有限)。

在接下来的几个模块中,我们将演示如何使用 Detours 和 MinHook。此外,我们还将探索如何使用原生 Windows API 进行挂钩,并最终编写 自定义 Hook 代码。自定义代码可以有效减少在使用开源库时产生的那些容易被杀软识别的“指纹”特征和 IoC。


🎯 总结#

在本模块中,我们学习了:

  1. Hook 的定义:理解了 Hook 本质上是对执行流的重定向。
  2. 技术分类:区分了单向跳转的“跳板”和双向交互的“内联挂钩”。
  3. 攻防价值:明确了 Hook 既是防御者的“监控探头”,也是攻击者的“手术刀”。

📚 下一步学习

下一个模块将介绍 API Hooking - Detours Library。我们将学习如何使用微软官方出品的强大工具库,写出我们的第一个实战 Hook 代码!