介绍 RE_VAULT:我的公开逆向工程项目档案
Source: Dev.to
什么是 RE_VAULT
RE_VAULT 是我公开的逆向工程项目和挑战二进制文件归档。
其中的主要项目是 Flag Hunt 2 – Black Cipher Edition,一个表现得像恶意取证文物的 C 程序。它包含菜单、诱饵输出、假分析模块以及大量陷阱,同时在同一个二进制文件中隐藏了多个独立的挑战。
- 10 个主要 flag
- 1 个从不打印的隐藏奖励 flag
- 多层混淆与误导
目标是提供一种更接近奇怪恶意软件或事件文物的体验,但仍然用于学习。
适用人群
如果以下任意描述符合你,Black Cipher 可能对你有用:
- 你正在学习 Ghidra 或其他逆向工具,想要的挑战超过普通的 crackme。
- 你想了解真实恶意软件中使用的技巧,而不必直接接触活体恶意软件。
- 你喜欢 C、底层行为以及奇怪的控制流。
- 你想练习同时站在攻击者和分析师的角度思考。
你可以从三种角度对待这个项目:
- 纯粹谜题 – 运行二进制文件,随意探索,使用 Ghidra 与笔记本尝试获取所有 flag。
- 学习实验室 – 一次专注于一个模块(例如仅 VM 或仅堆结构)。
- 参考材料 – 阅读 C 源码,了解某些规避模式是如何实现的。
Black Cipher 的行为方式
运行二进制文件后,你会看到一个小型分析控制台,而不是干净的 CTF‑style 界面:
- 一个伪装成取证工具的横幅。
- 一个“分析模块”列表。
- 每个菜单选项触发不同的挑战路径。
有些模块打印噪声,有些直接失败,只有少数会在不费力的情况下直接给出 flag。挑战的一部分就在于辨别哪些输出是真实的,哪些是诱饵,哪些是可以自行解码的编码形式。
剧透警告
本文余下部分会讨论二进制文件的内部结构。不会提供确切的 flag 字符串或完整解法;描述故意保持在高层次。如果你想完全盲目尝试,请立即停止阅读,克隆仓库,编译程序,然后再回来。
挑战的高层结构(轻度剧透)
Black Cipher 中的每个菜单条目对应一种不同风格的挑战,将一套“迷你课程”压缩进一个可执行文件。
1. 字符串解密模块
- 加密的字符串表存放在内存中。
- 解码例程混合 XOR 与位旋转。
- 在 Ghidra 中跟踪例程以恢复真实文本;原始输出故意被弄乱。
2. 控制流追踪器
- 带有指针表的函数指针迷宫。
- 有些通向死路或诱饵;唯一一条路径通向真实 flag。
- 练习重建奇怪的控制流并聚焦于实际执行的代码。
3. 哈希校验系统
- 自定义多项式式哈希函数。
- 答案字符串从不以明文形式存储。
- 重新实现哈希并找到正确的输入。
4. 二进制数据提取器
- 数据隐藏在二进制段中(看起来像随机字节)。
- 简单的变换将这些字节转化为有意义的数据。
- 使用 Ghidra 检查
.rodata布局并编写脚本进行解码。
5. 防篡改检测器
- 使用
ptrace与时间检查的防调试技巧。 - 只有在检查通过时才会显示 flag。
- 理解、打补丁或模拟防调试逻辑。
6. 虚拟机分析器
- 小型自定义 VM,包含字节码数组和解释器循环。
- 用正确的状态运行 VM 最终会打印 flag。
- 逆向 VM 并对其进行仿真,或手动逐步执行。
7. 数学求解器
- 逻辑陷阱:可见的方程并非关键。
- 真正的约束隐藏在不同的分支后。
- 跟踪导致 flag 的实际条件。
8. 内存取证工具
- 挑战位于堆上:一个结构体包含部分编码的数据。
- 程序打印噪声字节,干净的 flag 从不直接出现。
- 确定结构体布局,理解编码方式,重建原始内容。
9. 网络协议解码器
- 假的 PCAP‑style 二进制块嵌入在二进制文件中。
- 简单的协议检查决定解析方式。
- 小型解码器恢复隐藏信息。
- 练习“嵌入二进制块 + 解码例程”这一在恶意软件中常见的模式。
10. 多阶段哈希验证器
- 一连串自定义的类哈希函数;每个函数的输出喂给下一个。
- 只有极其特定的字符串能通过所有检查。
- 在脚本中复现完整链条以找到 flag。
隐藏的奖励 flag
第十一条 flag 从不打印,也没有明显的引用。提示:
- 位于二进制的自定义节中。
- 字节被加密且顺序颠倒。
- 解密逻辑分散在多个无关函数中。
如果你熟悉 ELF 内部结构、自定义节以及 Ghidra 脚本编写,最终会找到它。它奖励的是对整个二进制的完整理解,而非速度。
如何获取解答
仓库特意 不 包含完整解答。另有一份可应要求提供的解答文档,内容包括:
- 如何在 Ghidra 中定位每个挑战。
- 在反编译代码中需要关注的点。
- 编码与哈希的实际工作原理。
- 从首次加载到最终 flag 的具体步骤。
如果你是:
- 想在课堂上使用此项目的教师,
- 卡住了需要核对自己进度的学生,或
- 正在审阅代码并想看到完整推理的人员,
可以给我发送邮件以获取解答文档。