kctf2026-Problem4-Traffic Jam
SkillWeb & browsingWalks your agent through crackme reverse engineering of a KCTF2026 challenge to reconstruct a 9226-character serial.
Available today. Use it from your connected AI after setup.
No other account needed.
Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
Then ask your AI: use the kctf2026-Problem4-Traffic Jam skill
About this skill
Solution approach for the SeeKan KCTF2026 Problem 4 CrackMe reverse engineering: identify Heaven's Gate, exception-driven VM instructions, environment branches and a modified AES, use polynomial integer roots and custom Base64, and reconstruct a 9226-character Serial.
What this skill tells your AI
The instructions your AI receives, as published by manyuegong33/r0crawl_skills in skills/kctf2026-题4-车流困城/SKILL.md and read by ahel’s review.
文章补充的可验证常量
- 目标用户名:
KCTF;合法 Serial 长度 9226 字节。 - Serial 格式:
lI|0O+ 9216 字节主体 +Il1|!。 - 主体 alphabet:
Il1|!ijJL\oO0QDSs5$Zz2B8gq96nNmMWwUuVvRrPpCc({tT+7xXKkYyAa4Ee3FH`。 - 逆自定义 Base64:
v=(alphabet_index[ch]+51+27*i)&63,标准 Base64 解出 6912 字节。 - 公开解法给出的最终 Serial SHA-256:
e34dc3a75754abf44a96d4902bac38b5dd0310fffb2974b27cc84b932ae5847b。 - 明文十进制记录长度约 6897 字节,NUL 补齐到 6912;100 组十次多项式共 1000 个整数根。
目标是给定用户名 KCTF 构造通过校验的超长 Serial。程序为 32 位 PE,但核心算法藏在 64 位代码,通过异常处理模拟指令集,并根据父进程/PEB 状态选择真、假算法。
标准解法流程
-
确认真实执行环境
- 入口
sub_4010E0保存寄存器后执行push 0x33; retf(Heaven's Gate)切换 long mode。 in/out/int3等特权指令并非 I/O,而是 VEH(Warning)捕获后按 opcode 分派的自定义 VM 指令:0xED反调试、0xEE长度校验、0xEF派生密钥、0xEC计算混淆跳转。- 程序枚举父进程并对名称做 djb2 哈希;仅 explorer/cmd/powershell 等白名单进入真算法。PEB
BeingDebugged字节在 AES 与格式校验阶段分别加0x1A、0x40,两次叠加形成0x5A密钥。调试或 patch 任一步会落入假路径。
- 入口
-
恢复自定义编码(Serial 外层)
- 合法 Serial 固定 9226 字符:5 字符头尾 + 9216 正文;正文字符表 64 个可打印字符。
- 对正文每位置
i,字符表下标a_i与真实 6-bit 值v_i:v_i=(a_i+51+27*i) mod 64;编码反推a_i=(v_i-51-27*i) mod 64。6912 字节密文对应 432 个 16 字节块。
-
逆向魔改 AES 层
- 通过输入差分确认 ECB(仅同一块输出变化)。状态按列存储,轮函数按行运算;使用逆列混合和右移行变换,不能直接套标准 AES 库。
- 异常上下文中轮询线程栈上的
CONTEXT/XMM 寄存器,在不暂停、不写内存的情况下采集相邻轮状态;差分恢复 GF(2^8) 多项式0x11B下的 S 盒、轮密钥及首轮异或值。 - 每轮线性层后额外 XOR
0x40常量,需在重实现中保留。
-
求解多项式根并构造明文
- 用户名经 31-base hash,再用 Murmur
fmix;循环取state & 0x3fff,去重得到 100 行。 - 每行 11 个压缩 BCD 系数,解密密钥:
base=(group*0x9E3779B9) XOR (coef_index*0x517CC1B7)。解码后首字节为符号+7 位十进制位,后续半字节为十进制系数。 - 每组 10 次多项式的整数根即 10 个数字。常规组在整数范围因式分解并用 Horner 验证;第 84 组故意篡改一次项,枚举常数项因子后逐一代入筛选 10 个互异整数根。
- 根按组内升序,以
-连接生成 1000 个十进制数。注意格式长度约束:在首个整数前补 6 个前导0,总长度 6897,再以 NUL 补齐到 6912 字节。
- 用户名经 31-base hash,再用 Murmur
-
验证与交付
- 按自定义 AES 正向加密 6912 字节,再执行位置相关 Base64 编码并添加固定头尾,得到 Serial。
- 先改单字符做差分,确认每个块和真路径;最后在原始未 patch 程序、白名单父进程、无调试器条件下验证
Successful!。
可复用检查清单
- 识别 32→64 位 Heaven's Gate,分别反汇编两套代码。
- 建立 opcode→VEH handler 的自定义 ISA 表,禁止简单 NOP 异常指令。
- 记录父进程、PEB、调试寄存器对算法状态的影响。
- 用输入差分判断 ECB/状态布局;从异常
CONTEXT只读采样恢复密钥。 - 对整数根使用精确因式分解/Horner,处理篡改系数与排序。
- 严格满足明文长度、NUL 对齐及位置相关编码规则。
Signals
- GitHub stars
- 285
- Forks
- 100
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Key
kctf2026-4- Source
- github.com/manyuegong33/r0crawl_skills