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 网络安全项目
金边美国大学 [![GitHub](https://img.shields.io/badge/GitHub-MoriartyPuth--Labs-181717?style=for-the-badge&logo=github&logoColor=white)](https://github.com/MoriartyPuth-Labs)
标签:Python, Wayback Machine, Writeup, 云资产清单, 反汇编, 无后门, 算法, 逆向工程