Skip to content

CTF-RE-TOOL v1.6.0 — 自主解题能力

Choose a tag to compare

@ip2867 ip2867 released this 17 Oct 06:43
· 39 commits to main since this release

核心转变:从"给 AI 喂结论"到"用数据验证假设"

v1.6.0 把工具从"辅助解题"推进到"自主解题"。四个阶段全部落地,并经过多轮真机实测验证。

一、载荷检测流水线(可插拔)

新增 PAYLOAD_DETECTORS 注册表,"找下一层载体"不再是单一公式:单字节 XOR/ADD × stride 1/2/4、
周期 XOR(2/3/4/8 字节,用 DOS stub 已知明文恢复密钥)、滚动 XOR/ADD、Base64/Hex 文本、ELF/DEX、裸 shellcode 序言。
新增形态只需注册一个函数,主流程/提示词/测试都不用改。

二、负面断言自动反证(本项目最重要的机制)

AI 说"没有第二载体 / 没有加密 / 真 flag 不在此文件"时,工具不再被动采信,而是用扫描数据反驳:

  • 规则表:no-second-carrier / no-crypto / no-decoding / no-vm / delegates-to-user
  • 只报确定性证据(偏移、长度、魔数),不用猜测反驳猜测
  • 反证成立且本轮无 flag → 自动追加一轮 AI,把反驳当新一轮输入

delegates-to-user 专门拦截"请用户提供 stage2"这类把可自动完成的活推给人的结论。

三、假设—实验—反馈闭环

  • 求解脚本输出 [FAIL]/[MISS] 结构化行 → 自动归因为"算法错 / key 错 / 参数形态错 / 密文取错"
  • rankAttempts() 按信息增益排序候选(工具识别的算法优先、已排除组合降权)
  • 失败组合落盘 excluded_paths.json,下一轮提示词注入"已排除的路"

四、跨阶段自主接力

  • 扫描到高置信度 PE/ELF/DEX 载荷且本层无算法指纹时,工具自动解码→写盘→校验魔数→接力
  • 判据区分「载荷定位结论」与「算法指纹结论」
  • 四段式交接包;层数上限 3→6

五、常量差分分析 + SM4 变体全组合解密

针对"AI 认出了算法却仍解不出"的实测问题(曾耗 345 秒 / 59 次工具调用未果):

  • analyzeCustomBlockConstants():比对 S 盒与标准表、定位轮常量表并算出精确差分
    (如"该表 = 标准 SM4 CK 的每一字节都 +0x1")、给出 FK 候选与字节序线索
  • buildSM4VariantDecryptScript():生成可执行脚本,枚举 密文候选 × FK 候选 × key 候选
    × 8 种字节序 × 3 种块内排列,命中即退出
  • 工具直接执行该脚本,1.1 秒解出,不再消耗 AI 预算

能力边界(明确声明):脚本只覆盖 SM4 骨架。无 SM4 形态轮常量表时拒绝生成;
未命中时明确标注"不代表算法认错",避免 AI 误推翻正确结论。

六、修复真机暴露的 3 个通用缺陷

  • analysisData 跨作用域引用(3 处)→ ReferenceError 吞掉整轮 AI 结果
  • "内嵌 PE/high" 被当作算法指纹 → 自动接力在每道 loader 题上失效
  • _inStageHandoff 阻断多层接力 → 多层题只能剥一层

另修复两个解码 bug:ADD 编码方向写反;JS 模板里的 "\n" 劈开 Python 字符串。

七、测试与回归

  • 16 个测试文件,全部通过
  • 13 道真实赛题回归集(正例验证能力生效,负例验证不误伤)
  • 能力边界 14 项断言(非 SM4 结构必须拒绝生成脚本)
  • 新增 test_scope_safety.js:静态扫描跨作用域引用,防止同类 bug 复发

八、同步修复的遗漏

  • electron/preload.js 的 scanCryptoFingerprints 桥接此前只在源码仓存在,现已同步
  • README 补上 v1.5.3 更新日志(此前遗漏)

下载:CTF-RE-TOOL.exe(单文件便携版,约 73 MB)

SHA256:0209f3ccc202496f0dfd512f70dd270d99c50d4b28856e0809f269957a2c7d9b