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文件解析, 云安全监控, 云资产清单, 代码混淆与反混淆, 安全意识培训, 恶意软件分析, 数据擦除, 逆向工程, 静态分析