MoriartyPuth-Labs/Crackmes-RE-CTF-2026
GitHub: MoriartyPuth-Labs/Crackmes-RE-CTF-2026
Crackmes.one 逆向工程 CTF 2026 的完整 writeup 合集,包含六道逆向挑战的概念验证代码、复现步骤和自动化求解脚本。
Stars: 0 | Forks: 0
# Crackmes.one RE CTF 2026 — Writeups
包含概念验证代码、复现步骤和工具说明的完整 writeup。**点击挑战以打开其 writeup。**
| # | 挑战 | 类别 | Flag / 解决方案 |
|---|-----------|----------|-----------------|
| 1 | [**Maze**](writeups/maze/) | 逆向 — 纯汇编 BFS 图遍历 | `<684字符移动序列>` (见 writeup) |
| 2 | [**Bubbly**](writeups/bubbly/) | 逆向 — 冒泡排序交换索引追踪 | `2 3 4 5 7 9 10 13 ...` (22个索引, 见 writeup) |
| 3 | [**BitCalc**](writeups/bitcalc/) | 逆向 — 自修改 x86,递归 DFS | `374274518` (4个有效输入之一) |
| 4 | [**date_of_birth**](writeups/date_of_birth/) | 逆向 — 反调试 SIGSTOP + 有符号字节溢出 | `6/29/1898` (针对 2026-06-28 的示例) |
| 5 | [**FLRSCRNSVR**](writeups/FLRSCRNSVR/) | 逆向 — Windows 屏幕保护程序,替换 + XOR + 反转 | `CMO{frogt4s7ic_r3vers1ng}` |
| 6 | [**wallpaper**](writeups/wallpaper/) | 逆向 — 十六进制半字节上的 15-puzzle,A* 求解器 | `CMO{<37字符移动序列>}` (见 writeup) |
每个文件夹都包含一个独立的 `README.md` writeup 以及一个可运行的求解器脚本。
```
writeups/
├── maze/ README.md + solve.py + targets.py
├── bubbly/ README.md + main.py
├── bitcalc/ README.md + solve.c + extract.gdb
├── date_of_birth/ README.md + keygen.py
├── FLRSCRNSVR/ README.md + solve.py
└── wallpaper/ README.md + solve.py
```
## 使用的工具
- **反汇编 / 反编译:** Ghidra (Windows PE), GDB + Python API (ELF 动态分析), `objdump`, `file`, `strings`
- **Python 3:** 所有求解器 — BFS/A* 图搜索,自修改代码重构,注册机数学运算,密码反转
- **C:** BitCalc 递归 DFS 求解器 (`gcc -O2`)
- **distorm3:** 用于扫描 Maze 出口节点的反汇编库
- **平台:** Linux (WSL2) 用于 ELF 挑战;Windows 用于 FLRSCRNSVR 屏幕保护程序
```
pip install distorm3
gcc -O2 -o solve writeups/bitcalc/solve.c
```
## 经验 / 总结
- **Maze** — 没有符号的纯汇编二进制文件仅仅是字节中的一种模式;一旦你找到 106 字节的节点图块,BFS 就能机械地解决它。
- **Bubbly** — 追踪排序算法而不是逆向检查过程;从排序后的目标重构原始数组,然后重放排序过程以输出交换索引。
- **BitCalc** — 自修改代码只有在提取出立即数常量之前才可怕;之后它就是 2³² 个 DFS 分支,可以用位反转技巧进行剪枝。
- **date_of_birth** — 反调试 SIGSTOP 极易绕过;真正的挑战在于年份检查中的有符号字节溢出 (`0x7F+1 = -128`),它将无限的搜索空间缩小到极少数几个日期。
- **FLRSCRNSVR** — 基于注册表的屏幕保护程序仍然在 `.rodata` 中存储明文转换参数;三步可逆密码可以用三行 Python 代码反转。
- **wallpaper** — 硬编码在 `.rodata` 中的谜题状态暴露了整个挑战;基于曼哈顿距离的 A* 瞬间找到了一个 37 步的解决方案。
## 作者
**Eav Puthcambo**
AUPP 网络安全项目
金边美国大学 [](https://github.com/MoriartyPuth-Labs)
AUPP 网络安全项目
金边美国大学 [](https://github.com/MoriartyPuth-Labs)
标签:Python, Wayback Machine, Writeup, 云资产清单, 反汇编, 无后门, 算法, 逆向工程