介绍 RE_VAULT:我的公开逆向工程项目档案

发布: (2025年12月3日 GMT+8 03:44)
8 min read
原文: Dev.to

Source: Dev.to

什么是 RE_VAULT

RE_VAULT 是我公开的逆向工程项目和挑战二进制文件归档。
其中的主要项目是 Flag Hunt 2 – Black Cipher Edition,一个表现得像恶意取证文物的 C 程序。它包含菜单、诱饵输出、假分析模块以及大量陷阱,同时在同一个二进制文件中隐藏了多个独立的挑战。

  • 10 个主要 flag
  • 1 个从不打印的隐藏奖励 flag
  • 多层混淆与误导

目标是提供一种更接近奇怪恶意软件或事件文物的体验,但仍然用于学习。

适用人群

如果以下任意描述符合你,Black Cipher 可能对你有用:

  • 你正在学习 Ghidra 或其他逆向工具,想要的挑战超过普通的 crackme。
  • 你想了解真实恶意软件中使用的技巧,而不必直接接触活体恶意软件。
  • 你喜欢 C、底层行为以及奇怪的控制流。
  • 你想练习同时站在攻击者和分析师的角度思考。

你可以从三种角度对待这个项目:

  1. 纯粹谜题 – 运行二进制文件,随意探索,使用 Ghidra 与笔记本尝试获取所有 flag。
  2. 学习实验室 – 一次专注于一个模块(例如仅 VM 或仅堆结构)。
  3. 参考材料 – 阅读 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 的具体步骤。

如果你是:

  • 想在课堂上使用此项目的教师,
  • 卡住了需要核对自己进度的学生,或
  • 正在审阅代码并想看到完整推理的人员,

可以给我发送邮件以获取解答文档。

Back to Blog

相关文章

阅读更多 »

切换账户

@blink_c5eb0afe3975https://dev.to/blink_c5eb0afe3975 正如大家所知,我正重新开始记录我的进展,我认为最好在一个不同的…

Strands 代理 + Agent Core AWS

入门指南:Amazon Bedrock AgentCore 目录 - 前置要求(requisitos‑previos) - 工具包安装(instalación‑del‑toolkit) - 创建…