hACKCASCAC/ObfusHunter
GitHub: hACKCASCAC/ObfusHunter
ObfusHunter 是一款基于 C++ 的 PE 文件静态分析工具,专门用于检测混淆、保护模式及 TCC 编译器签名,帮助安全研究人员快速评估二进制文件威胁。
Stars: 23 | Forks: 3
🛡️ ObfusHunter
Advanced PE Obfuscation & Protection Detector
## 📌 概述
**ObfusHunter** 是一款基于 C++ 的闪电般快速的静态分析工具,旨在识别和分析 Windows 可移植可执行 (PE) 文件中的混淆技术。它主要专注于检测 `Obfus.h` 保护模式、垃圾代码插入、反调试机制、虚拟化标记以及字符串混淆循环。
无论您是在逆向工程恶意软件、分析打包的可执行文件,还是验证编译器签名(特别是 TCC),ObfusHunter 都能提供一份清晰的、包含十六进制地址的报告,列出每一个发现的可疑模式。
## 🚀 功能
- **高速内存映射**:利用 `CreateFileMapping` 瞬时处理大型 PE 文件,避免陷入 I/O 瓶颈。
- **TCC (Tiny C Compiler) 识别**:通过自定义的 DOS 存根和 x86/x64 入口点 (EP) 签名,高精度检测 TCC 产物。
- **深度签名扫描**:
- 🗑️ **垃圾代码**:识别栈破坏模式和虚拟指令。
- 🪲 **反调试**:检测硬件断点清除(`DR_CLEAN`)、`RDTSCP` 计时检查以及基于异常的陷阱。
- 💻 **虚拟化**:发现虚拟机分发器(`VM_DISPATCH_X86` / `X64`)和损坏的跳转。
- 🏷️ **水印与伪节**:查找 Enigma、Denuvo、Nuitka 的痕迹,以及典型的加壳器节名(如 `.vmp0`、`UPX0` 等)。
- 🧵 **字符串混淆**:启发式引擎,用于检测 `HIDE_STRING` 的逐字节栈构建序列(甚至包括定制的 TCC 变体)。
- **RWX 异常检测**:标记具有读/写/执行权限的节。
- **密度评分**:计算标记密度(每 KB 命中数)和威胁分数,以衡量混淆的强度。
## 🛠️ 使用方法
ObfusHunter 是一个命令行工具。只需将目标 PE 文件的路径作为参数传递即可。
```
ObfusHunter.exe
```
### 示例输出
```
____ _ __ _ _ _
/ __ \| | / _| | | | | | |
| | | | |__ | |_ _ _ ___| |__| |_ _ _ __ | |_ ___ _ __
| | | | '_ \| _| | | / __| __ | | | | '_ \| __/ _ \ '__|
| |__| | |_) | | | |_| \__ \ | | | |_| | | | | || __/ |
\____/|_.__/|_| \__,_|___/_| |_|\__,_|_| |_|\__\___|_|
[ File Information ]
Path: sample_protected.exe
Size: 231424 bytes
Arch: x64
EntryPoint: 0x1A420
[+] Compiler: Tiny C (TCC)
Language: C
[!] Obfus.h Protection: CONFIRMED
Detection Score: 152.00
Marker Density: 0.34 hits/KB
Detailed Detection Log (12 hits):
RVA Offset Category Details
----------------------------------------------------------------------
0x00001000 0x00000400 Compiler Tiny C (TCC) detected by Linker/Stub
0x0001A420 0x00018820 Compiler TCC x64 EntryPoint
0x00021A50 0x0001FE50 String Obf HIDE_STRING sequence (15 chars)
0x0002B100 0x00029500 Anti-Debug AD_DR_CLEAN
```
## 🏗️ 构建说明
该项目为 Windows 构建,使用 MSVC。
1. 在 **Visual Studio** (2019/2022) 中打开 `ObfusHunter.sln`。
2. 将配置设置为 `Release` / `x64`(或根据您的目标选择 x86)。
3. 生成解决方案(`Ctrl + Shift + B`)。
## 🧠 内部原理(面向分析师)
### 启发式规则与字节特征
ObfusHunter 使用支持通配符(`-1`)的字节模式匹配。
例如,`HIDE_STRING` 的检测并非一个简单的静态签名。该引擎会遍历二进制文件,寻找连续的栈赋值操作:
- `mov byte ptr [rbp+YY], XX` (`C6 45 YY XX`)
- `mov byte ptr [rsp+YY], XX` (`C6 44 24 YY XX`)
- 以及 TCC 特有的变体:`mov eax, XX; mov [rbp+YY], al`
如果找到这类操作的链(最少 6 个字节),它就会将其标记为一个字符串混淆构建循环,并精确揭示字符串在内存中被动态构建的位置。
### TCC 识别
由于恶意软件作者偏爱轻量级编译器,ObfusHunter 会检查以下特定属性:
- TCC 独有的自定义 DOS 存根。
- 链接器主版本号/次版本号。
- 标准的 TCC 函数序言(`push rbp; mov rbp, rsp; sub rsp, ...`)与入口点地址的匹配。
## ⚖️ 免责声明
本工具专为逆向工程师、恶意软件分析师和安全研究人员设计。旨在用于教育目的以及分析您有权检查的二进制文件。标签:C++工具, DAST, DNS 反向解析, PE文件分析, RWX异常检测, TCC识别, URL发现, 二进制分析, 云安全监控, 云安全运维, 云资产清单, 内存映射, 反调试检测, 垃圾代码检测, 威胁评分, 字符串混淆, 安全意识培训, 安全检测, 恶意软件分析, 打包器检测, 技术栈识别, 水印检测, 混淆检测, 端点可见性, 签名扫描, 虚拟化检测, 逆向工程, 静态分析