hACKCASCAC/ObfusHide-StringDumper
GitHub: hACKCASCAC/ObfusHide-StringDumper
一款针对 Obfus.h 混淆框架的静态 PE 字符串恢复工具,通过识别 TCC 栈构造模式重建被隐藏的明文字符串并解析其虚拟地址。
Stars: 3 | Forks: 1
# 🛡️ Obfus.h HIDE_STRING Dumper
用于 Obfus.h 保护二进制文件的静态隐藏字符串恢复工具
# 📌 概述
Obfus.h HIDE_STRING Dumper 是一款专用的 C++ 分析实用程序,专门设计用于检测和重建由 **Obfus.h** TCC 混淆框架中的 `HIDE_STRING` 宏隐藏的字符串。
与通用的字符串转储工具不同,此工具专门针对 Obfus.h 在编译时字符串保护期间生成的精确指令模式。它静态解析 Windows PE 可执行文件,并直接从 Tiny C Compiler (TCC) 发出的基于栈的字节初始化序列中重建隐藏的明文字符串。
扫描程序无需模拟、解包或运行时执行即可识别动态构造的字符串。
每个恢复的字符串都会自动解析为其对应的虚拟地址 (VA),从而允许在 x64dbg、IDA Pro、Ghidra 或 Binary Ninja 中进行即时导航。
# 🚀 功能
- ⚡ 高速静态 PE 扫描
将目标可执行文件直接加载到内存中以进行超快速分析。
- 🧵 Obfus.h HIDE_STRING 重建
检测由以下生成的精确栈构造模式:
- `HIDE_STRING(...)`
- `STACK_STRING(...)`
- Tiny C Compiler 字节初始化代码
- 🎯 虚拟地址解析
将原始文件偏移量转换为调试程序就绪的虚拟地址。
- 🔍 TCC 专用模式匹配
专门围绕 Obfus.h 使用的 Tiny C Compiler 操作码生成机制而设计。
- 🧠 PE 头解析
自动处理:
- DOS 头
- NT 头
- PE 节
- ImageBase
- RVA 映射
- 🖥️ 彩色控制台界面
具有调试程序友好格式的风格化十六进制报告。
- 📦 零依赖
纯 WinAPI + 标准 C++ 实现。
# 🛠️ 用法
Obfus.h HIDE_STRING Dumper 是一个命令行实用程序。
```
ObfusHide_StringDumper.exe
```
示例:
```
ObfusHide_StringDumper.exe malware_sample.exe
```
# 📄 输出示例
```
[+] Scanning file: malware_sample.exe (231424 bytes)
[VA: 0x000000014001A420 | File Offset: 0x00018820] -> "Hello World"
[VA: 0x000000014001A480 | File Offset: 0x00018880] -> "https://api.telegram.org"
[VA: 0x0000000140020F10 | File Offset: 0x0001F310] -> "Debugger detected"
[+] Found 3 hidden strings.
```
# 🧠 底层原理
## Obfus.h 如何隐藏字符串
Obfus.h 中的 `HIDE_STRING` 宏通过直接在栈上逐字节构造字符串,从而避免将明文字符串存储在 `.rdata` 中。
原始代码:
```
HIDE_STRING("Hello World")
```
会变成类似于以下内容:
```
mov eax, 48h
mov [rbp-0Fh], al
mov eax, 65h
mov [rbp-0Eh], al
mov eax, 6Ch
mov [rbp-0Dh], al
mov eax, 6Ch
mov [rbp-0Ch], al
mov eax, 6Fh
mov [rbp-0Bh], al
```
而不是正常的编译器输出:
```
lea rax, "Hello World"
```
这会从二进制数据节中移除明文字符串,并强制在运行时进行重建。
## 检测引擎
扫描程序逐字节遍历可执行内存,搜索由 TCC 和 Obfus.h 发出的精确指令链。
支持的模式包括:
```
B8 XX 00 00 00
88 45 YY
```
以及栈写入变体:
```
C6 45 YY XX
```
```
C6 44 24 YY XX
```
当检测到多个连续的字节写入时,该工具将直接从操作码立即数中重建原始的隐藏字符串。
# ⚙️ 检测逻辑
在以下情况下,字符串候选对象被认为是有效的:
- 检测到多个连续的栈写入
- 至少重建了 4 个可打印字符
- 操作码链与已知的 Obfus.h/TCC 生成模式匹配
不可打印字节在输出前会被自动过滤。
# 🔬 适用场景
Obfus.h 分析
# 🏗️ 构建说明
该项目面向 Windows 平台,并使用 MSVC 构建。
### 前置条件
- Visual Studio 2019/2022
- Windows SDK
- 推荐使用 C++17
### 构建
1. 在 Visual Studio 中打开项目
2. 选择:
- `Release`
- `x64` 或 `x86`
3. 构建解决方案 (`Ctrl + Shift + B`)
# ⚖️ 免责声明
本项目严格仅供教育、恶意软件研究以及授权的逆向工程使用。
请勿对您不拥有或无权分析的系统或二进制文件使用此软件。
标签:C++, DAST, PE文件解析, 云安全监控, 云资产清单, 代码混淆与反混淆, 安全意识培训, 恶意软件分析, 数据擦除, 逆向工程, 静态分析