laosilaisi 发表于 2025-6-20 14:48:00

Windows 环境下 DLL 劫持的七大实战技法

# 不传之秘:Windows 下的 7 种 DLL 注入技术

在本文中,我将列出 **七种可以在 Windows 用户模式进程中使用的 DLL 注入技术**。也许还存在更多方式,但我将分享我亲自实践并掌握的一手技术。

---

## 1. AppInit\_DLLs

过去,很多人依赖于注册表中的 `AppInit_DLLs` 项。操作系统加载程序会在创建进程时读取该值并加载指定的 DLL。

* 适用于早期系统(如 Windows XP)
* 由于恶意软件的广泛使用,该技术已被限制或弃用
* 新版 Windows 默认不再支持,需手动启用特定策略

---

## 2. SetWindowsHookEx API

通过 `SetWindowsHookEx()` 可以将自定义钩子函数安装到钩子链表中。

* 适用于键盘、鼠标、窗口消息等事件的钩子
* 可以使操作系统将你的 DLL 注入到相关进程中
* 需要配合 `USER32.dll` 的相关调用才能触发注入

> 注意:系统将钩子 DLL 注入到其他需要接收钩子的进程中,这使其成为一种经典的用户态注入技术。

---

## 3. IFEO(Image File Execution Options)键

`IFEO` 注册表项可用于:

* 指定调试器
* 加载 AppVerifier 插件
* 更改进程行为(堆选项等)

你可以通过创建一个自定义 AppVerifier 插件,实现 DLL 注入。

> 示例路径:

```
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\YourTargetApp.exe
```

---

## 4. Remote Threads(远程线程注入)

该技术通过创建远程线程的方式向目标进程注入 DLL。

* 本质是在目标进程中调用 `LoadLibrary()`
* 简单高效
* **但容易被杀软检测**,因其属于典型的恶意行为

---

## 5. 进程跟踪与批量注入(Implicit Tracking)

原理是 hook 进程创建 API,比如:

* `kernel32!CreateProcessInternalW`
* `ntdll!NtCreateProcess*`

基本步骤:

1. 枚举并注入当前所有运行进程
2. hook 所有进程中的进程创建 API
3. 在子进程创建时暂停 -> 注入 DLL -> 恢复运行
4. 子进程将继续 hook 后续新进程,实现“链式注入”

> 常用于安全产品或持久化后门。通过注入 `explorer.exe` 可实现对“开始菜单”中所有应用的跟踪注入。

---

## 6. AppCompat Shimming(应用兼容层)

这种方式源于微软的 AppCompat 技术和 EMET 项目。

* 基于 `AppPatch.dll` 和 `.sdb` 数据库
* 支持:

1. 内存搜索与替换
2. DLL 加载与注入(支持通配符)
3. 模拟 API 返回值等

注入方式:

* 生成自定义 `.sdb` 兼容性数据库
* 注册到系统并通过兼容层自动加载指定 DLL

> 这种方式是“加载过程”的一部分,不是真正意义上的“运行时注入”。

---

## 7. Kernel Drivers(内核驱动)

虽然不属于纯用户态方式,但它是最强大的注入技术之一。

* 驱动可以拦截进程创建事件
* 注入 DLL 或执行 APC(异步过程调用)
* 常用于杀毒软件、EDR 等安全产品

> 注:使用驱动程序需有管理员权限和签名支持,在现代 Windows 系统上受限较多。

---

## 结语

DLL 注入是一个引人入胜的技术领域,不同的技术在隐蔽性、兼容性、安全性和持久性方面各具优劣。

| 技术               | 兼容性 | 易用性 | 检测难度 |
| ------------------ | --- | --- | ---- |
| AppInit\_DLLs      | 低   | 中   | 中    |
| SetWindowsHookEx   | 高   | 高   | 低    |
| IFEO 键             | 中   | 中   | 中    |
| Remote Threads   | 高   | 高   | 高    |
| 进程跟踪注入             | 高   | 低   | 高    |
| AppCompat Shimming | 中   | 中   | 低    |
| Kernel Driver      | 高   | 低   | 中    |

---

> 原文参考:(http://lallouslab.net/2017/05/15/7-dll-injection-techniques-in-the-microsoft-windows/)

wangzuxian 发表于 2026-2-24 11:21:10

内核驱动比较有效 可以防检测
页: [1]
查看完整版本: Windows 环境下 DLL 劫持的七大实战技法