ctf-re-tool
Health Uyari
- License — License: MIT
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Low visibility — Only 5 GitHub stars
Code Basarisiz
- fs.rmSync — Destructive file system operation in electron/agent-runtime.js
- fs module — File system access in electron/agent-runtime.js
- exec() — Shell command execution in electron/script-dedup.js
- exec() — Shell command execution in electron/tool-result.js
- fs.rmSync — Destructive file system operation in electron/tool-result.js
- fs module — File system access in electron/tool-result.js
- new Function() — Dynamic code execution via Function constructor in tests/failure_attribution_loader.js
- fs module — File system access in tests/failure_attribution_loader.js
Permissions Gecti
- Permissions — No dangerous permissions requested
Bu listing icin henuz AI raporu yok.
CTF 逆向 AI 解题工作台(Electron / Windows):AI 工具循环 + 本地验证闭环,MCP 接入 IDA/JEB/Burp;自动求解 APK/PE/ELF/PYC/DEX/JAR/Mach-O/Lua/Web-JS;内置 11 个方法论技能 + 54 页结构化知识库 + 经验自进化。
CTF-RE-TOOL v1.7.3
一个基于 Electron 的 CTF 逆向 AI 解题工作台(Windows 桌面应用)。把「静态分析 → 动态 Hook → 算法还原 → 本地验证」串成一条 AI 可自主驱动的流水线,并通过 MCP 实时接入 IDA / JEB / Burp,内置 11 个逆向方法论技能(Skills)与可检索的结构化知识库(Wiki)。
核心是解题成功率,不是功能堆砌:
- AI 工具循环(Tool-Use):AI 自主调用 JEB/IDA/Frida/Python 等工具反复推进,而不是一次性问答;分阶段提示词(①收集 → ②定位算法 → ③写脚本本地验证 → ④结论)。
- 本地验证闭环:AI 给出的每个 flag 都附
[VERIFY]契约,工具自动生成 Python 复现脚本本地跑一遍,标注 ✅已验证 / ⚠️未验证——不靠"AI 说解出来了"就当解出来了。 - 结构化知识库:54 页可检索手法/题解页(含 43 篇历年逆向题,带
attack_chain解法链 /reasoning_chain思维链 /failed_attempts避坑),按关键词结构化加权检索,命中即注入 AI 上下文。 - 经验自进化:每次解题沉淀的多步攻击链写入经验库,下次同类题自动速查复用。
下载:v1.7.3 便携版 CTF-RE-TOOL.exe(73.9 MB,单文件双击即用,无需安装 / 无需 Node.js)
校验:
SHA256 = 04a7c37e53c1b663379ab8683fb1863facd1e551456fffcc50634670908262d1首次运行请在「设置」页填写 IDA / JEB / jadx 等外部工具路径(本工具是调度框架,不含这些工具)。
适用范围:CTF 竞赛、授权渗透测试、自有系统的安全研究。请勿用于未授权目标。
功能特性

三栏布局:左侧文件分析与工具区,中间 AI 对话,右侧输出日志 / Frida Hook / 快速操作。
1. 文件拖入+自动识别
- 支持 APK、EXE/PE(含 .NET 识别)、ELF/SO、DEX、PYC(全版本魔数)、JAR/.class、Lua 字节码、WASM、Mach-O
- ZIP 按内容精确区分 APK / JAR / 普通 ZIP
- .NET 程序集自动提示 dnSpy/ilspycmd 流程;APK 自动检测 Unity IL2CPP(global-metadata.dat)
- 显示文件详细信息(MD5、SHA256、大小等)
2. 一键调用逆向工具
静态分析工具:
- IDA Pro - 静态分析
- DIE - 查壳工具
- JEB - Android 分析
- jadx - DEX→Java 反编译
脱壳工具:
- UPX - 脱壳工具
- apktool - APK 解包
Python工具:
- pycdc - Python 字节码反编译
- pycdas - Python 字节码反汇编
3. Frida 自动 Hook
- 自动生成针对题目情报的 Hook 脚本(从静态分析提取类名/native 方法/算法特征注入模板,而非固定模板)
- Java 层:Cipher、MessageDigest、String、SharedPreferences、Base64、
Arrays.equals等 - Native 层:主动扫描 Java 声明的 native 方法 + RegisterNatives 拦截(动态注册、无
Java_导出时的唯一入口)+ 符号级findFunc - JCE 通杀自吐:Hook
Cipher.init/doFinal,不追业务代码直接吐算法/密钥/明文 - 进程内解密出 flag:把已求得的 key/iv/密文注入 Hook,在 App 进程内直接 decrypt 并
send('[FLAG]...'),绕过关卡 - 反检测:Frida 文件/端口探测绕过、SSL pinning 绕过(Java 层 + native
SSL_read/write)、反调试绕过 - 实时显示 Hook 日志;滚动窗口抓取(每来数据续 60s,绝对上限 10min);spawn 失败自动回退 attach
4. 解密脚本生成
- 自动生成 Python 解密脚本
- 支持常见算法:AES、DES/3DES、TEA、XXTEA、RC4、XOR、Base64(含自定义码表)、CRC32、SM4(国密)
- RSA 攻击脚手架(小指数/factordb/Wiener/共模)、Z3 约束求解、angr 符号执行模板
5. 反调试绕过
Android:
- ptrace 检测绕过、Debuggable 标志清除
- Frida 文件/端口检测绕过、TracerPid 检测绕过
- System.exit / Process.killProcess / Debug.isDebuggerConnected 绕过
Windows PE(新增):
- IsDebuggerPresent / CheckRemoteDebuggerPresent / PEB BeingDebugged
- NtGlobalFlag / NtQueryInformationProcess / OutputDebugString 绕过
APK 重打包(新增):
- apktool 解包 → smali patch → 回编 → zipalign + jarsigner 签名 一键批处理
6. AI 分析引擎(流式输出)
- 兼容 CCSwitch / Claude Code 的 Anthropic
/v1/messages接口(Base URL 留空则由环境变量或设置页提供) - SSE 流式逐字渲染,发送按钮可随时停止 AI 任务
- 429/5xx 自动退避重试;
max_tokens可配置;连接 60s / 空闲 120s 超时 - Tool-Use 循环(最多 25 轮,工具结果自动截断防止撑爆上下文)
- 分阶段解题提示词:APK/PE/ELF 深度求解按「①收集代码+数据 → ②定位算法 → ③写脚本本地验证 → ④出结论」四阶段推进,强制"先证据后结论",禁止跳步臆测
- 模型分级(cascade):先用快速模型初解,未出 flag 再升级思考模型,兼顾速度与成功率
- AI 系统提示注入真实 MCP 连接状态、已收集结论(避免重复劳动/推翻已验证项)、知识库索引与经验速查;flag 用
[FLAG]...[/FLAG]契约标记便于程序提取 - 兜底模板针对性:AI 生成的 Frida 脚本失败时,回退模板会注入题目情报(包名、类名、native 方法、算法特征)做针对性 Hook,而非固定模板
7. Agent Skills 知识库(v1.2 新增)
skills/目录 + SKILL.md 格式,兼容 Anthropic Agent Skills / ljagiello·ctf-skills(MIT)- 内置 11 个中文方法论文档:
ctf-writeup(提交级题解写作)、ctf-reverse-android、ctf-reverse-binary、ctf-reverse-tooling(Z3/angr/Unicorn 自动化求解 + 迷宫题)、ctf-reverse-langs(Python 字节码/Go/Rust/Lua 语言特定逆向)、ctf-iot-firmware(固件提取/解包/QEMU 仿真)、ctf-crypto-identify、ctf-antidebug、ctf-frida-dynamic、ctf-jsreverse(JS/Web 逆向五阶段)、ctf-dispatch(分流与卡题决策) - AI 可通过
read_skill工具按需加载(渐进披露,不占固定提示词);系统提示只注入技能索引 - 用户可往
%APPDATA%/ctf-reverse-tool/skills/或应用skills/目录放自己的 SKILL.md,重启即生效
8. CASE 证据体系 + 验证闭环(v1.2 新增)
- 拖入文件自动建案:
cases/<题名>_<md5前8>/,含evidence/(MCP 采集物落盘)、scripts/、timeline.jsonl(全量日志时间线)、findings.json(结构化发现) - flag/解题记录双写:原
solveNotes兼容保留,新增结构化 findings(含来源与时间戳) - 验证闭环:AI 按契约输出
[VERIFY]{"algo","key","ciphertext","expected"}[/VERIFY]→ 工具自动生成 Python 本地复现 → flag 标 ✅已验证 / ⚠️未验证 - 本地枚举:AI 给出
[HYPOTHESES][...][/HYPOTHESES]候选组合(算法/密钥/字节序),工具并行枚举全部组合,命中即停;验证失败自动触发,也可聊天输入枚举假设手动触发
9. WP 双轨(v1.2 新增)
- 模板轨(
wp命令 / "生成WP"按钮):升级为 findings 驱动——证据清单、flag 验证状态自动填充,无数据才留占位 - AI 轨(
aiwp命令):按 ctf-writeup 技能生成"摘要-分步解法-单一完整求解脚本-Flag"提交级题解,AI 失败自动回退模板轨
10. Burp MCP + JS 逆向(v1.3 新增)
- Burp MCP 客户端:会话握手/工具发现与 IDA 同款(Streamable HTTP),AI 可搜索代理历史、取 HTTP 报文详情、调用插件暴露的任意工具
- Burp 路径可配置(在设置页指定自己的启动器路径),左侧工具区一键启动,MCP 栅格一键连接,
burp 启动/burp 历史聊天命令 - ctf-jsreverse 技能:五阶段流程(观察→捕获→复现→验证→记录);路径A 算法追踪四板斧 vs 路径B 环境伪装;JSVMP/瑞数/obfuscator.io 判型速查;案例坑库(TikTok X-Bogus、抖音 a_bogus、瑞数 sdenv)
- node_js 验证契约:AI 还原的 JS 加密函数经
[VERIFY]{"algo":"node_js","code":"function decrypt(input){...}","input":"参数原文","expected":"密文"}交给本地 node 复现,与抓包密文比对 - 全局经验库(reverse-skill 进化层思路):解题成功自动入库(内容级去重,不重复),下次解题自动注入 AI 提示词速查;也可用
经验 <一句话>手动回写、查经验查看
11. 结构化知识库 + 检索体系(v1.3.5 重构)
- 三层结构:
AI-SEARCH-INDEX.md(全局检索索引,按技术标签定位资源)→PAYLOAD-CHEATSHEET.md(逆向套路/Payload/脚本速查)→ 各专题页 - 历年逆向题条目库(
wiki/reverse/,43 篇):从公开题库筛选的纯逆向题,每题一个页面,带结构化 meta:attack_chain—— 完整解法链(特征 → 关键步骤 → 坑 → 出 flag)reasoning_chain—— 思维链(怎么想到这条路的)failed_attempts—— 走不通的路与原因(往往比成功更有价值)key_observations/key_payload/one_liner/tags/difficulty
- 结构化加权检索:
wiki_search解析 YAML meta,命中tags/attack_chain/reasoning_chain/key_observations/one_liner的条目大幅加权(远高于正文散命中),带 meta 的条目优先返回one_liner+attack_chain摘要,让 AI 一步拿到"这道题该怎么解" - 手法专题:
wiki/frida/(多阶段 Hook、进程内解密出 flag、Native 密钥反演、参数/IV 编码坑、环境排障、native 定位+RegisterNatives+反检测+脱壳)、wiki/firmware/(固件解包/QEMU 仿真踩坑) - 两处可放页:应用内置
wiki/(随 exe 分发)+%APPDATA%/ctf-reverse-tool/wiki/(用户自加,重启即生效);系统提示只注入页面索引,不占固定上下文 - 设计参考 Des-CTF-Knowledge 知识库的「结构化 meta + attack_chain + 分段索引」范式(仅借鉴设计思路,纯文本条目,零样本落地)
12. 分组密码识别与变体求解(v1.7 新增)
- S 盒知识库(
electron/crypto-tables.js):AES / AES 逆 / SM4 完整 S 盒、AES Rcon、SM4 FK/CK/旋转常量全部固化,扫描器不再散落硬编码 - S 盒三级关系判定:
classifySbox()逐个比对标准表,报出exact(完全相同)/ 逐项XOR·ADD/ GF(2) 仿射(高斯消元求 8×8 可逆矩阵 + 回代验证 256 项),并给出能否精确还原 - 非线性度指标:Walsh 谱计算(标定值 AES/SM4 = 112,随机置换 90~96)。只描述设计强度,不据此劝退——CTF 大量题目用随机置换当 S 盒,照样能解
- 结构推理
inferCipherStructure():SM4 CK 固定差分 → SM4 骨架;AES S 盒关系 + Rcon → AES 骨架;未知结构明确说"未知"而不是硬猜 - 多骨架解密器:
- SM4:枚举 密文 × FK × key × 16 种字节序/状态组合 × 3 种块内排列
- AES:pycryptodome 主路径,枚举 key 长度 16/24/32(轮数 10/12/14)× 字节序 × 状态排列
- DES/Blowfish:明确不支持,不假装能解
- 诚实边界:轮数被改 / MixColumns 矩阵被替换的变体不支持,未命中时明确提示"不代表算法认错"
13. AI Agent 运行时(v1.7.3 新增)
借鉴开源项目 openclaude 的上下文管理与可靠性设计(electron/agent-runtime.js,参数逐项对照其源码标定):
| 能力 | 机制 |
|---|---|
| 大输出落盘 | 超过 24k 字符的工具输出写盘,回传 60% 头 + 40% 尾预览(错误堆栈/flag 常在尾部)。旧实现只截头会丢关键信息 |
| 旧结果微压缩 | 每轮把旧 tool_result 替换为占位串,只保留最近 6 条;绝不清 is_error(错误是模型纠错的依据) |
| 确定性上下文压缩 | 超 90k token 触发,保留首条任务 + 最近 10 条 + 抽取的硬事实(偏移/常量/骨架/已排除路线);熔断 3 次 / 冷却 5 分钟;不额外调模型 |
| 连续调用拦截 | sha256(工具 + 完整入参) 连续 3 次即拦(不做前缀截断,否则"同文件不同尾部的两次写"会被误判) |
| 跨轮失败环 | 按 (工具,错误类别) / 类别 / 路径 三键累计;第 2 次提醒、第 3 次判死;NoSymbol 时给出候选函数名 |
| 工具预检 | 执行前做确定性检查,错误必带"怎么改":路径不存在给相近文件、IDA 缺参给补救工具建议 |
| 结构化经验检索 | 按当前题特征词给经验条目打分,只注入命中的 top 6(≤600 字符),零命中不注入 |
| 会话续跑 | 追加式 JSONL;恢复时剥离未完成的 tool_use / 孤立 tool_result(不清洗会直接 400),末尾注入续跑指令 |
| API 重试 | 5 次指数退避 + 抖动、优先 retry-after、429 上限 3、4xx 不重试 |
界面:AI 调用工具时显示实时步骤条(⏳ 正在反编译 main → ✅ 1.2s · 3400 字符),长任务不再"看起来卡死"。
14. 对话滚动与离线可用性(v1.7.3 修复)
- 修复"流式输出时无法向上滚动":旧实现每收到一个 token 就
scrollTop = scrollHeight,用户上滑一次立刻被拽回底部。改为 stick-to-bottom(距底 ≤48px 才跟随;滚轮上滑/PageUp/Home 立即脱离),并加"回到底部"悬浮按钮;日志面板同样受保护 - 图标库本地化:Font Awesome 全量内置到
src/vendor/(约 1MB),CSP 收紧为font-src 'self'。原来依赖 cdnjs,实测超时 16 秒会让<link>阻塞解析、页面停在 loading(内网/离线环境表现为启动卡死)
环境要求
- Windows 10/11
- Node.js 18+
- Python 3.10+(用于解密脚本)
- 安卓9模拟器(ADB端口:62025,Frida端口:27042)
打包成单文件 exe
npm install # 首次:装依赖(含 electron-builder)
npm run build:exe # 产物:dist/CTF-RE-TOOL.exe(便携版,双击即用)
- 产物为便携单文件 exe(无需安装),图标取自
assets/icons/icon.ico - 打包后取证目录
cases/、脚本目录scripts/会自动落到%APPDATA%/ctf-reverse-tool/下
(打包态app.getAppPath()是只读 asar,不能写入,见main.js的writableBase()) - 首次构建需下载 Electron 运行时与打包工具二进制;国内网络建议走镜像:
set ELECTRON_BUILDER_BINARIES_MIRROR=https://registry.npmmirror.com/-/binary/electron-builder-binaries
工具路径配置
本工具是一个框架——它调用外部逆向工具干活,本身不含这些工具。首次运行请在应用内「设置」页把工具路径填成你机器上的实际路径,配置保存到 %APPDATA%\ctf-reverse-tool\config.json。
需要的工具(JEB/jadx/apktool/UPX/DIE/pycdc/Frida/Nox 模拟器等)请从各自官网获取;IDA Pro、JEB、Burp Suite 为商业软件,需自行购买授权。
electron/main.js 的 DEFAULT_CONFIG 中所有工具路径默认为空字符串(占位),由用户在设置页填入,例如:
tools: {
ida: 'C:\\Tools\\IDA\\ida.exe',
jadx: 'C:\\Tools\\jadx\\bin\\jadx-gui.bat',
apktool:'C:\\Tools\\apktool\\apktool.jar',
upx: 'C:\\Tools\\upx\\upx.exe',
nox_adb:'C:\\Program Files\\Nox\\bin\\nox_adb.exe'
}
安装与运行
# 克隆项目
git clone <repository-url>
cd ctf-tool-v2
# 安装依赖
npm install
# 启动应用
npm start
# 或者双击 启动.bat
项目结构
ctf-tool-v2/
├── package.json # 项目配置 + electron-builder 打包配置
├── electron/
│ ├── main.js # Electron 主进程(IPC、工具调用、MCP 客户端、AI 传输、知识库检索、打包路径处理)
│ └── preload.js # 预加载脚本(contextBridge 暴露 API,sandbox 开启)
├── src/
│ ├── index.html # 主页面(CSP + SRI 加固)
│ ├── css/style.css # 样式(暖白简约主题)
│ └── js/app.js # 渲染层逻辑(AI 编排、Tool-Use 循环、Hook 生成、验证闭环、WP 生成)
├── skills/ # 11 个逆向方法论技能(SKILL.md,AI 经 read_skill 按需加载)
│ ├── ctf-dispatch/ # 总调度:分类 → 选方法 → 卡题换路
│ ├── ctf-reverse-binary/ ctf-reverse-android/ ctf-reverse-langs/
│ ├── ctf-reverse-tooling/ # Z3/angr/Unicorn 自动化求解 + 迷宫题
│ ├── ctf-frida-dynamic/ ctf-antidebug/ ctf-jsreverse/
│ ├── ctf-iot-firmware/ ctf-crypto-identify/ ctf-writeup/
├── wiki/ # 可检索结构化知识库(54 页,AI 经 wiki_search/wiki_read 检索)
│ ├── AI-SEARCH-INDEX.md # 全局检索索引(优先读)
│ ├── PAYLOAD-CHEATSHEET.md # 逆向套路/Payload/脚本速查
│ ├── reverse/ # 43 篇历年逆向题(YAML meta:attack_chain/reasoning_chain/failed_attempts)+ _INDEX.md
│ ├── frida/ # 6 篇动态 Hook 手法页
│ └── firmware/ # 固件解包与仿真
├── assets/icons/ # 应用图标
├── LICENSE # MIT
├── 启动.bat # Windows 快速启动
└── README.md
dist*/(打包产物)、cases/(取证目录)、scripts/(生成脚本)为运行期产物,不入库。
使用说明
基本操作
- 拖入文件:将 APK/EXE/ELF 等文件拖入左侧区域
- 查看信息:自动显示文件类型、MD5、SHA256 等信息
- 启动工具:点击工具按钮直接启动对应逆向工具
- 生成脚本:点击快速操作按钮生成 Frida/解密脚本
分析流程(基于ctf-agent)
APK分析:
- DIE查壳 → 有壳则脱壳
- jadx/JEB静态分析
- 定位关键函数
- Frida Hook动态分析
- 算法还原 → Python解密脚本
PE分析:
- DIE查壳 → 有壳则脱壳
- IDA静态分析
- 反调试检测与绕过
- 算法识别
- 解密脚本生成
ELF分析:
- IDA静态分析
- 反调试检测与绕过
- 算法识别
- Frida动态分析
快捷键
Enter- 发送消息Shift+Enter- 换行
Claude API 配置(兼容 CCSwitch)
本应用会读取 CCSwitch/Claude Code 使用的环境变量,并直接调用 Anthropic-compatible /v1/messages 接口:
ANTHROPIC_BASE_URL:你的 AI 接口地址(如https://api.anthropic.com,或自建/中转地址)ANTHROPIC_AUTH_TOKEN:你的 API Token / 鉴权 TokenANTHROPIC_MODEL:模型名,例如claude-sonnet-4-5、glm-5.3
也支持 CTF_CLAUDE_BASE_URL、CTF_CLAUDE_API_KEY、CTF_CLAUDE_MODEL 覆盖上述值。也可以在应用「设置 → AI 接口」里直接填写 Base URL / API Key(保存到用户目录 config.json,不进源码)。启动前可在 PowerShell 中设置(不要把真实 Token 写入源码或 README):
$env:ANTHROPIC_BASE_URL = "https://your-api-endpoint.example.com"
$env:ANTHROPIC_AUTH_TOKEN = "<你的 Token>"
$env:ANTHROPIC_MODEL = "claude-sonnet-4-5"
npm start
未配置 Base URL 时,应用会在调用 AI 时明确报错并提示去哪里配置。
应用会自动请求 ${ANTHROPIC_BASE_URL}/v1/messages。如果你的服务提供的是完整 /v1/messages URL,请去掉该后缀。若从 CCSwitch 启动本应用,请确认 Electron 子进程继承了这些环境变量;否则将变量设置为 Windows 用户环境变量或使用同一 PowerShell 启动。
本项目默认使用 夜神模拟器 Nox(Android 9),不是雷电(LDPlayer)。默认配置为:
- ADB:
127.0.0.1:62025 - Frida 转发端口:
127.0.0.1:27042 - ADB 程序:
<Nox安装目录>\bin\nox_adb.exe(在设置页配置实际路径)
因此不需要另外下载雷电 App。如果你使用 LDPlayer,需要在配置中改成 LDPlayer 的 ADB 路径和实际端口,并确认设备架构与 frida-server 一致。
首次部署 Frida
- 在模拟器中开启 Root,并确认设备在线:
<nox_adb路径> connect 127.0.0.1:62025
<nox_adb路径> -s 127.0.0.1:62025 shell getprop ro.product.cpu.abi
<nox_adb路径> -s 127.0.0.1:62025 devices
- 从 Frida Releases 下载与电脑端
frida版本相同、架构匹配的frida-server,然后部署:
<nox_adb路径> -s 127.0.0.1:62025 push frida-server /data/local/tmp/frida-server
<nox_adb路径> -s 127.0.0.1:62025 shell su -c "chmod 755 /data/local/tmp/frida-server"
<nox_adb路径> -s 127.0.0.1:62025 shell su -c "/data/local/tmp/frida-server -D"
<nox_adb路径> -s 127.0.0.1:62025 forward tcp:27042 tcp:27042
frida-ps -H 127.0.0.1:27042
- 软件中点击“Frida进程”确认能列出进程,再点击“运行Hook”。运行前先安装并启动 APK;软件会抓取约 20 秒 Hook 输出。也可以在终端持续运行:
frida -H 127.0.0.1:27042 -n "包名或进程名" -l hook.js
若提示 unable to connect,依次检查:模拟器在线、frida-server 正在运行、PC 端 frida 与 server 版本一致、端口转发存在、目标进程已经启动。
IDA MCP(ELF/PE)要求
“ELF 一键 AI 分析”需要 IDA 已打开当前 ELF/PE 文件,并且 IDA MCP 插件正在监听 http://127.0.0.1:13337/mcp。应用现在会完成 MCP 会话握手、读取 tools/list、兼容 JSON/SSE 响应并按实际工具名调用。若端口未监听,先在 IDA 中启用 MCP 插件,再重试;日志中应看到“IDA MCP 已连接”和工具发现结果。
Android/APK 流程使用 JEB MCP(默认 127.0.0.1:16161),与 IDA MCP 是两套独立服务,所以 APK 正常不代表 IDA 已启动。
更新日志
v1.7.3 (2026-10-18) — AI Agent 运行时 + 对话滚动修复 + 分组密码能力补齐
一、AI Agent 运行时(借鉴 openclaude)
新增 electron/agent-runtime.js,解决长任务三个核心痛点:上下文爆掉、原地打转、崩溃丢进度。
| 能力 | 机制 | 参数来源 |
|---|---|---|
| 大输出落盘 | 60% 头 + 40% 尾预览,超阈值写盘可回读 | openclaude 50k → 本工具 24k(窗口更小) |
| 旧结果微压缩 | 保留最近 6 条;不清 is_error | microCompact.ts |
| 确定性压缩 | 90k token 触发,抽硬事实;熔断 3 次/冷却 5 分钟 | autoCompact.ts |
| 连续调用拦截 | sha256(工具+完整入参) × 3 |
doomLoop.ts |
| 跨轮失败环 | 三键计数,第 2 次提醒、第 3 次判死 | toolFailureLoopGuard.ts |
| 工具预检 | 错误必带"怎么改" | toolErrors.ts |
| 经验检索 | 按题型特征词打分,零命中不注入 | memdir/ |
| 会话续跑 | JSONL + 结构清洗 | sessionStorage.ts |
| API 重试 | 5 次指数退避 | withRetry.ts |
与计划的偏差:A3 原计划"调模型生成摘要",改为确定性抽取硬事实——压缩本身要再发大请求且可能失败,而 CTF 里必须保住的是偏移/常量/骨架/已排除路线,规则抽取即可。
二、复查抓到的 4 个致命缺陷(都会让真实求解中断)
| 缺陷 | 后果 |
|---|---|
预检/失败环伪造 tool_use_id(id+'-adv') |
API 400,整轮求解中断 |
needPath 错列 run_python/ida_decompile |
所有 Python 脚本与 IDA 反编译被判"缺 path"而拒绝 |
IDA 参数名写错(function vs 真实 function_name) |
IDA 工具永远无法通过预检 |
压缩切点落在 tool_result 上 |
对应 tool_use 被丢弃 → API 400 |
三、对话滚动修复
流式输出时每收到一个 token 就 scrollTop = scrollHeight,用户上滑一次立刻被拽回底部。改为 stick-to-bottom(距底 ≤48px 才跟随;滚轮上滑/PageUp/Home 立即脱离),新增"回到底部"按钮;日志面板同样受保护。
四、离线可用性
Font Awesome 全量本地化(约 1MB),CSP 收紧。原来依赖 cdnjs,实测超时 16 秒导致 <link> 阻塞解析、页面卡在 loading——内网/离线环境会表现为启动卡死。
五、分组密码能力(v1.7.0–1.7.2)
crypto-tables.js:AES/SM4 全表知识库classifySbox():exact / XOR·ADD / GF(2) 仿射三级判定- S 盒非线性度(Walsh 谱):修正了两处公式错误——旧实现把 AES/SM4 标准表也算成 -128,会让 AI 放弃真实 S 盒
inferCipherStructure():SM4 / AES 骨架推理- 多骨架解密器:SM4 全组合枚举 + AES pycryptodome 主路径;DES/Blowfish 明确不支持
六、测试
25 个测试文件 / 13 道真实回归题 / 全绿。新增专项:
test_tool_contract.js(57 项):工具 schema 与预检/UI 标签的参数名一致性test_precheck.js(26 项):合法调用必须放行、非法调用必须拦截test_message_contract.js(17 项):tool_use/tool_result一对一契约test_agent_runtime.js(60 项):运行时九大能力test_scroll_follow.js(14 项)/test_ui_integrity.js(36 项):滚动与 UI 接线
v1.6.0 (2026-10-17) — 自主解题:确定性感知 + 负面断言反证 + 全组合枚举
核心转变:从"给 AI 喂结论"升级为"用数据验证假设"。四个阶段(详见 PLAN-autonomous-solving.md):
一、载荷检测流水线(可插拔)
新增 PAYLOAD_DETECTORS 注册表,把"找下一层载体"从单一公式升级为按序尝试多种形态:
单字节 XOR/ADD×stride 1/2/4、周期 XOR(2/3/4/8 字节)、滚动 XOR/ADD、Base64/Hex 文本存储、
ELF/DEX、裸 shellcode 序言。新增形态只需注册一个函数,主流程/提示词/测试都不用改。
回归题集当场抓到一个会让情况变糟的误报:首版把 11 道正常 ELF 全报成"内嵌 ELF @0x0"。
根因是key=0(明文)未排除。没有回归题集,这个缺陷会让 AI 对每道正常 ELF 题都先去"提取下一层"。
二、负面断言自动反证(本项目最重要的机制)
AI 说"没有第二载体 / 没有加密 / 真 flag 不在此文件"时,工具不再被动采信,而是用扫描数据反驳:
- 规则表:
no-second-carrier/no-crypto/no-decoding/no-vm/delegates-to-user - 只看确定性证据(偏移、长度、魔数),不用猜测反驳猜测
- 反证成立且本轮无 flag → 自动追加一轮 AI,把反驳当新一轮输入
delegates-to-user专门拦"请用户提供 stage2"这类把可自动完成的活推给人的结论——
实测中 AI 的正确诊断配上了错误的行动,工具本可以自己提取。
三、假设—实验—反馈闭环
- Python 模板输出
[FAIL]/[MISS]结构化行 → 归因分类为"算法错 / key 错 / 参数形态错 / 密文取错",给出可执行建议 rankAttempts()按信息增益排序(工具识别的算法优先、已排除组合降权)- 失败组合落盘
excluded_paths.json,下一轮提示词注入"已排除的路"
四、跨阶段自主接力
- 扫描到高置信度 PE/ELF/DEX 载荷且本层无算法指纹时,工具自动解码→写盘→校验魔数→接力,不再等 AI 喊
- 判据区分「载荷定位结论」与「算法指纹结论」(修复了"内嵌 PE/high"被误判导致自动接力全线失效的 bug)
- 四段式交接包;层数上限 3→6,防循环交给 md5 去重
五、常量差分分析 + SM4 变体全组合解密
针对"AI 认出了算法却仍解不出"的问题(实测 345 秒 / 59 次工具调用未果):
analyzeCustomBlockConstants():比对 S 盒与标准表、定位轮常量表并算出精确差分
(如"该表 = 标准 SM4 CK 的每一字节都 +0x1")、给出 FK 候选与字节序线索buildSM4VariantDecryptScript():生成可执行脚本,枚举 密文候选 × FK 候选 × key 候选
× 8 种字节序 × 3 种块内排列,命中即退出- 阶段 1.9:工具直接跑该脚本,1.1 秒解出,不再消耗 AI 预算
能力边界(明确声明):脚本只覆盖 SM4 骨架。无 SM4 形态轮常量表时拒绝生成;
未命中时明确标注"不代表算法认错",避免 AI 误推翻正确结论。
六、修复真机暴露的 3 个通用缺陷
| 缺陷 | 后果 |
|---|---|
analysisData 跨作用域引用(3 处) |
ReferenceError 吞掉整轮 AI 结果 |
| "内嵌 PE/high" 被当作算法指纹 | 自动接力在每道 loader 题上失效 |
_inStageHandoff 阻断多层接力 |
多层题只能剥一层 |
另修复两个解码 bug:ADD 编码方向写反(应 -key 而非 +key);JS 模板里的 "\n" 劈开 Python 字符串。
七、测试
16 个测试文件 / 13 道真实回归题 / 能力边界 14 项断言。
新增 tests/run_regression.js(多题实测)与 tests/test_scope_safety.js(静态扫描跨作用域引用)。
v1.5.3 (2026-10-16) — 算法识别优先:文件级指纹扫描 + 步长 S 盒 + 同思路脚本拦截
背景(Disguise 血泪):工具的"算法识别"此前只有软提示、没有确定性识别——detect-file-type
只管容器类型;app.js 里硬编码的 0x9E3779B9/S 盒/SM4 只用于聊天回复;真正决定 AI 看到什么的是
IDA 采集器,而 PE/ELF 主路径只读"被反编译函数引用"的地址。后果:AI 每次都往 AES 猜、
反编译 13 个 VM handler、烧掉 500+ 秒仍卡在"怎么写模拟器"。
一、文件级算法指纹扫描器(核心新增)
scanCryptoFingerprints() 直接读文件字节(不走 IDA、不受引用关系限制、不需 IDA 在线):
- 命中 SM4 FK 系统参数(铁证)、SM4/AES/AES 逆 S 盒、SM3 IV、MD5/SHA256 IV、TEA delta、CRC32 多项式、RC4、Base64
- 256 项双射表同时扫 stride=1/2/4——C 的
unsigned int sbox[256]占 4 字节/项(8e 00 00 00 …),
只扫连续字节会完全漏掉;Disguise stage2 的自定义 S 盒 @0xd630 即此形态,这正是此前把 SM4
变体误判成 AES 变体的根因 - 滑动窗口预筛(置换的 XOR/和 为定值的必要条件)保证 180MB 级文件不卡;平凡表过滤
(相邻差种类 <100 → 剔除偏移表/位重排表/GF(2⁸) 反对数表);>16MB 通用程序(浏览器/DLL)降为 low 置信度 - 零指纹 = 有效信息:明确提示"本层是壳/加载器/decoy,算法在下一层,去 dump 后重扫"
二、识别结果强注入 + 硬顺序约束
采集阶段与深度求解两处把扫描结论注入提示词顶部;出现 high 判定或确认双射 S 盒时追加
硬性顺序约束:"必须先用对应算法的标准解密框架(SM4:32 轮 + 轮密钥逆序 rk[31-i] + 块内字节反序[3][2][1][0],常量换题目表)完成验证;只有在标准路线确实全部失败(并说明报错)之后,才允许进入
逐条 opcode 手撕 VM 的路线。禁止无视本判定直接啃 VM 字节码。"
三、防"换写法重跑":脚本归一化相似度
在"完全相同签名"拦截之外,新增 normalizeScript/scriptSimilarity:把变量改名/注释/空白折叠后比较
(二元组 Jaccard),相似度 >88% 视为"同思路换写法",第 3 次拦截并提示换路。脚本类工具逐字节相同
则第 2 次即拦。实测"同一读常量表脚本换写法跑 30 次"的卡死场景可被截住。
四、知识库/技能联动
skills/ctf-crypto-identify:补"魔改变体识别三问"(常量标准?S 盒双射?轮结构?)与步长 S 盒坑。wiki/reverse/method_pe_loader_vm_obfuscation.md:补"如何用工具扫描结果确认魔改算法"决策表。
五、测试:新增 tests/(扫描器 11 项 + 解密枚举回归 6 项 + 脚本去重 10 项)+ run_all.js 运行器。
v1.5.2 (2026-10-16) — 修复"模型文本形态工具调用未执行"(AI 空转绕圈根因)+ 多阶段接力 + 长任务超时
一、文本形态工具调用未被解析(严重:AI 全程空转)
部分模型/代理不返回标准 tool_use 块,而是把工具调用当纯文本吐出,形如<||tool▁calls▁begin||>ida_find_strings(regex="flag")(全角竖线 + U+2581 分隔符,训练期特殊 token)。
原解析器只认 content[].type==="tool_use" → 工具一个都没执行,AI 拿不到任何真实数据,只能凭上下文空想,
表现为"3 秒完成、结论全是幻觉、反复绕圈子"(实测 Disguise 题 60 轮预算全废)。
修复:parseClaudeResult 加兜底解析 parseTextToolCalls——识别该标记格式并转成真正的工具调用
(支持 func(args)/裸名/name 与参数分行/单双竖线变体),同时清洗文本。流式推流处同步过滤,标记不再显示到聊天区。
二、多阶段接力(壳/packer 题自动续解)
新增 AI 工具 switch_to_next_stage:AI 解出内嵌新文件后自动接力——关闭当前 IDA/JEB 进程、
保留本阶段结论(摘要注入下一阶段)、以新文件重建分析上下文继续求解。层数上限 3,同一 md5 不重复接力。
三、长任务超时放宽
run_python 60s → 300s(Z3 求解 AES 变体、大规模枚举需数分钟;旧值会把"正在收敛的正确解法"误杀成超时,
AI 误判方向后换路重试,烧光预算);bash 30s → 120s。超时提示改为可行动指引("算得久≠方法错",建议缩小搜索空间/拆分脚本)。
四、提示词新增分组密码题分诊
识别为"16 字节分组 + S 盒查表 + 多轮"(AES 变体/微指令 VM 加密)时,不硬逆——写出正向模拟器用enc(候选)==目标 验证(块密码双射,正演验证等价且简单得多);符号求解一次只解 1 个块、S 盒用常量数组。
v1.5.1 (2026-10-16) — 修复消息路由误拦 + 全局中文输出
实战反馈两个问题,均修复。
一、消息路由宽泛关键词误拦(严重:用户消息根本到不了 AI)
旧路由用 lowerMessage.includes('工具') 做子串匹配——只要消息里出现「工具」二字(如"不要调用工具"、"用什么工具解这题"),
就直接返回一段固定的「ctf-agent 工具链」清单并 return,AI 完全收不到消息。同类宽泛拦截共 13 处(输出/规范/脚本/流程/反调试/签名/重打包,以及 tea/aes/sm4/rc4/md5/crc/apk/pe/elf 等算法与类型名),都会把正常提问误判为"查询知识卡片"。
修复:全部改为精确匹配(^工具链$ 这类整句命令,或"生成…脚本"这类明确意图短语),普通自然语言提问一律放行给 AI。
二、AI 输出中英混杂(用户要求全中文)
AI 的推理叙述常输出英文("I'll start by analyzing this PE file…"),可读性差。
修复:在主进程请求构造处(sendClaudeRequest / sendClaudeRequestWithTools)单点注入语言约束——所有 AI 调用路径(聊天、Tool-Use、分级快慢模型、复盘、题解、动态 Hook 决策)100% 覆盖。约束只针对自然语言叙述;代码、变量名、flag、路径、命令行、寄存器名保持原样不翻译。
v1.5.0 (2026-10-15) — CTF² 平台 8 题实战打磨:验证闭环三修 + 新题型分流 + 题目隔离
接入 CTF² Agent Arena 真实解题 8 道(全解出):ELF×5 / XLSX / TXT / zip 手包,全程观察工具表现就地修复 9 个缺陷。
验证闭环([VERIFY] 契约本地复现)三修 —— custom 契约命中率 0/3 → 3/3
- 调用形态自适应:AI 常写单参
decrypt(target)(置换/数据变换类),旧脚本只按双参调用 → TypeError 全灭。现按inspect.signature自动尝试 单参/双参原文/双参bytes/关键字参 五种形态,函数名兼容decrypt/custom_decrypt/solve/decrypt_flag。 - expected 双向包含:AI 给的 expected 常被截断成 flag 前缀(如
dice{P4ra...),与完整明文全等必败。改双向包含判定,命中值优先取 FLAG_RE 完整匹配。 - printable() 剥协议头:RC4 等明文常带控制字符封装头(
\x03\x11+len),整段被判不可打印回退成 hex,flag 被埋掉。现剥首尾控制符后再判,主体可读即返回文本。
新题型分流(直读文本,不再误入固件流程)
detect-file-type新增 XML(xml/rels/json/plist/yml)与 TXT(txt/enc/log/md/csv)两类。- 新增
analyzeXMLText():全文直读(≤256KB)→ Tool-Use AI 求解(可 read_file 伴生文件、bash 跑 Python 反推)——Excel 公式题、短密文题不再被丢给 Kali 白等 60 秒。 - OOXML 感知:xlsx/docx/pptx 按 ZIP 容器解压;主文件按「公式数」主导打分(ExceLLM 实测 244 公式的 VERIFY sheet 正确胜出,元数据 docProps 沉底)。
平台/下载器加固
- 下载器目录碰撞防御:附件与同名目录冲突时自动改名重试(EISDIR 整轮中止 → 消除)。
- 每题附件独立子目录
<下载目录>/<题名>/+ 多附件主文件按类型权重挑选(ELF/PE/pyc/zip 优先)——杜绝 AI 跨题读到历史残留文件(实战真实发生过:AI 把上一题的解压产物当成当前题的逻辑)。 - CTF² 自动解题流水线(MCP 客户端/下载/解压/清理)保留在代码内,平台拉题按钮从 UI 移除(内部测试功能不随版本发布)。
求解器增强
- AI Tool-Use 提示词加预算纪律(60 轮上限 + 冲刺指令)与「伴生文本必须 read_file 读全文」纪律。
- max_tokens 截断自动续写;IDA
-o参数坑规避(同目录建库)。
v1.4.0 (2026-10-14) — 修复 Frida Hook 证据被噪音淹没 / 降噪失效 / 经验跨阶段丢失
审查两次真实运行日志(一次 APK 自动解题、一次 Frida Hook)发现三个真实缺陷,全部修复。
一、Frida 输出"真证据被噪音挤出 AI 结论窗口"(高危,可能漏 flag)
Hook 输出回灌 AI 前,旧逻辑把 [DATA]/[FLAG] 真证据与 [HIT] 噪音混在一个池子里再 slice(-120)。而噪音(可达上百条)通常出现在真证据之后 → 尾部 120 条几乎全是噪音,真证据被整段丢弃。
本次实测复现:131 条关键行里 2 条真证据 + 129 条噪音,slice(-120) 后真证据 0 条保留。
(这次 flag 没丢,是因为另有一条独立逻辑直接收割 [FLAG] 行兜底;但若 flag 只以 [DATA]/普通解密输出形式出现,就会彻底漏掉。)
修复:改为分级保留 —— 高价值行([DATA]/[FLAG]/flag 形态/加解密实参/SP 读写)全部保留、不参与截断;仅对 [HIT] 噪音限量(保留末尾 40 条作线索)。实测:真证据 ✅必留。
二、Frida String.equals 降噪形同虚设(129 条 [HIT] 全是误报)
两条根因:
- 关键词正则
/flag|ctf|key|secret|token|pass|stage/i命中了应用包名本身 —— 本题包名com.nctf.hookmysecret同时含ctf与secret,导致每条涉及包名的比较都被判"有意义"而刷屏; - 兜底规则"两串 ≥6 字且长度差 ≤2"太松,把
include==ViewStub、pathInterpolator==linearInterpolator、res/*.xml等框架/资源串全部放行。
修复:改为"高熵优先 + 噪音形态黑名单"——① 高熵串(flag 形态/长 hex/base64)先保留(flag==flag 这种最终校验不能被误杀);② 双方均为噪音形态(包名/资源/绝对路径/算法名/框架词)排除;③ 语义词命中且非噪音形态才打印。修复前后对比:129 条噪音 → 0 条(降噪 100%),5 个正例(flag、hex key、password 对)全部保留。
三、经验"跨阶段丢失"(前序暂存的经验永远进不了库)
一次 APK 解题里,阶段2(初步分析)AI 产出的经验被"暂存",阶段2.5(Tool-Use)解出 flag 后只入库了它自己那条 —— 阶段2 那条滞留在内存 pendingExperience,既不入库、也不持久化(关应用即丢)。且该暂存区从不随换题清空,会跨题残留。
修复:① 换题(加载新文件)时清空 pendingExperience;② 解题成功时把本题前序暂存的全部经验一并入库(含防御性去重)。实测:阶段2 暂存 1 条 + 阶段2.5 成功 1 条 → 库内 2 条、暂存清空、重复幂等。
回归:修复项 #1 真证据必留 ✅ | #2 降噪 128/128 且正例 5/5 ✅ | #3 经验接管与幂等 ✅ | 原有回归(经验流 6/6、相似度 5/5、finalizeSolve 契约 2/2、求解路径审计 10/10)无回退 |
node --check全过。
v1.3.14 (2026-10-14) — 当日汇总
本条目汇总 2026-10-14 当天的全部更新(原按里程碑分为 v1.3.6 ~ v1.3.14 多次提交,现合并为一个版本)。
解题结构根治
- "三件套"收口:把"验证闭环 + 经验沉淀"从散落 9 处的两步复制粘贴,收口为单一入口
finalizeSolve(text, {source})—— 内含「验证闭环 → 失败自动枚举 → 登记 flag → 解题成功则经验自动入库」,从结构上杜绝"修一处漏一处"。 - 5 类"只指路"入口改为真正解题:
.dex/.jar/.class/ Mach-O /.luac此前只启动外部工具或打印指引(AI 不参与),现全部接入 AI 求解闭环 —— DEX/JAR 走 JEB 优先(不可用降级 jadx)、Mach-O 走 IDA、.luac走字节/常量抽取。分流表 12/12 均路由到真实求解器。 - 修复跨文件 MCP 缓存泄漏:
analyzeJavaLike未清缓存、state._keyClassesByContent从不重置 → 连解多题时上一题数据会串进本题提示词/类选择;现随clearMcpCache()一并清理。
经验与知识库"真正帮到解题"
- 经验自动入库 + 真去重:解题成功即写入(无需手动「保存」);去重从"按整行含日期比对(换日必重复)"改为与日期无关的内容级去重(精确 + 二元组相似度≥0.78 + 子串判定)。经验注入补全到所有求解路径。
- 修复题库 meta 解析 bug:
wiki_search解析 YAML 的m标志令$匹配行尾,导致列表写法的attack_chain/failed_attempts被解析为空 —— 43 篇题库仅 13 篇解法链可用。修复后 13 → 38 篇,检索摘要升级为 要点 + 解法链 + 避坑。 - 主路径自动预取:新增
prefetchKnowledge(),调用 AI 前按题面特征词检索题库并把攻略内联进提示词(已覆盖 APK/PE/ELF、PYC、Web/JS、DEX/JAR、Lua)。
PYC 逆向从"无解"到可用
- 多后端自动回退:pycdc → xdis/pydisasm → 原生 marshal+dis → 纯字节串扫描(永不空手);内置零依赖助手
electron/pyc_decompile.py。 - 求解器兼容
xor单字节整数密钥(xor_key=199)、custom返回str/list[int]归一化。
验证闭环与动态 Hook 通用性
- 修复 IDA 采集 0 反编译(最严重):
window.electronApi拼写错被空 catch 吞掉,实测反编译 0 → 19 个。 - 验证闭环不再"没契约就放弃":
synthesizeHypotheses()自合成候选矩阵(≤24 组)。 - AES/DES-CBC 缺 IV/错 IV 不再必然失败(枚举全零/首块/前置 IV + 回退 ECB);口令 key 自动派生(MD5/SHA-256/零填充)。
- 多候选密文交叉校验 + 自动裁决(IDA
xrefs_to判"哪条被校验函数引用"),防"变种题"陷阱。 - 动态 Hook:修复"抓到输出却报 0 条关键数据"、手动 Hook 自动驱动界面、枚举失败改按 PID attach、
String.equals降噪。
重构引入问题的修复
- v1.3.9:验证闭环 7 处复制粘贴收敛为
verifyAndRecord()(纯重构)。 - v1.3.10:修复该重构遗漏 ——
autoSolveFlag/autoSolveBinaryFlag只解构verifiedFlags却引用裸flags,导致ReferenceError: flags is not defined。
v1.3.5 (2026-10-13) — 结构化知识库 + 解题成功率优化
- 知识库重构为「结构化 + RAG 友好」:新增全局检索索引
AI-SEARCH-INDEX.md与速查表PAYLOAD-CHEATSHEET.md - 历年逆向题条目库:新增
wiki/reverse/,43 篇纯逆向题(从 132 候选筛选、剔除 PWN/杂项),每题带attack_chain(解法链)/reasoning_chain(思维链)/failed_attempts(避坑)等 YAML meta - 修复结构化检索失效:
wiki_search此前只解析---front matter,而条目库把 meta 放在```yaml围栏里,导致 tags/attack_chain 加权**完全失效**;现兼容两种写法,并新增vuln_type/contest/difficulty加权;命中片段优先展示one_liner+attack_chain且保留原文大小写(防止把大小写敏感的 flag 小写化) - 系统提示瘦身:不再逐条列出 43 篇逆向条目路径(交给
wiki_search检索),每次请求省约 1.5k tokens - Frida 能力增强:吸收两大开源 Frida Hook 项目精华——RegisterNatives 拦截、JCE 通杀自吐、SSL pinning 绕过(Java+native)、脱壳、反检测;兜底模板注入题目情报做针对性 Hook(不再是固定模板)
- AI 解题流程优化:APK/PE/ELF 深度求解改为四阶段流水线提示词;AI 脚本语法错自动重新生成 2 轮
- 环境自愈:frida client/server 版本一致性自检、双 adb 互杀重连、装 APK 前 package 服务就绪轮询、GUI 窗口可见性修复(IDA/JEB/Nox)
- Frida 枚举失败自动降级为按 PID 附加:某些模拟器(如 Nox Android9)上
frida-ps/-f/-n/-F会抛queryIntentActivities NullPointerException(即使 client=server 版本完全一致,是枚举路径本身的 quirk)——旧逻辑据此判"Frida 不可用"并跳过整个动态阶段。现改为adb pidof/ps取 PID →frida -p <PID>附加(实测该路径正常),动态阶段继续 - 隐私与安全:移除源码/文档中硬编码的私有 AI 中转地址(Base URL 默认留空,未配置时明确报错);
git-filter-repo抹除历史中的私有域名与本机路径;清理构建残留与一次性调试脚本 - 发现并修复:
wikiSearch结构化 meta 解析失效(见上);baseUrl为空时由Invalid URL改为明确的中文配置提示
v1.3.4 (2026-10-09) — 知识库扩充 + 固件逆向 + 开源发布
- 知识库技能 8→11:新增
ctf-reverse-tooling(Z3/angr/Unicorn 自动化求解 + 迷宫题)、ctf-reverse-langs(Python 字节码/Go/Rust/Lua 语言特定逆向)、ctf-iot-firmware(固件提取/解包/QEMU 仿真) - 知识库 Wiki:
wiki/可检索手法页(wiki_list/wiki_search/wiki_read),系统提示只注入页面索引;内置 Frida 专题 + 固件解包/仿真专题 - Hook 进程内解密直接出 flag:把已求解的 key/iv/密文注入 Hook 脚本,运行时捕获明文,绕过关卡直接解出;滚动窗口抓取(每来数据续 60s,绝对上限 10min)
- 命令注入收口:新增参数化执行原语
run-tool-args(argv 数组,无 shell 解析)、纯 Nodezip-list/grep-in-dir,渲染层不再拼接 PowerShell/cmd 命令字符串 - 文件 IPC 边界:
write-file/read-file/ensure-dir/append-file加写入根约束(userData/应用目录/临时目录/CASE 目录),并屏蔽读取工具自身凭据配置 - Electron 加固:
webPreferences启用sandbox,拦截will-navigate与setWindowOpenHandler(外部链接一律交系统浏览器) - 界面:暖白简约主题;键盘焦点环(
:focus-visible)+ 减少动效支持;移除说明书弹窗 - 打包:electron-builder 输出便携单文件
CTF-RE-TOOL.exe(含应用图标) - 仓库卫生:
node_modules/HANDOFF.md/.zcode计划/一次性调试脚本取消入库,重写.gitignore
v1.3.3 (2026-09-12) — 第四轮复审(自动化流程专项)
- P0:processUserMessage 的 hasWord 在声明前使用(TDZ),英文消息含 "script" 一词即静默崩溃 → 提升至函数顶部
- P1:analyzeWebJS 全程占锁(轮询阶段此前不加锁,可并发双流程造成流错乱);两个轮询循环可通过再点发送键中止(flowAbortRequested)
- P1:Burp 传输探测双重 initialize(严格 Streamable 服务器会拒绝导致误判回落 SSE)→ 复用 burpHttpEnsureSession
- P2:tools/call 超时不再重试(防非幂等重复执行);SSE 连接失败路径补 waiter 清理;JS 文件读证失败不再中断流程;AI 空结果单列提示;experience.md 表头判断修正(read-file 返回 {success:false} 而非抛异常)
- 知识库:ctf-dispatch 分流表补 Web/JS/加密参数 → ctf-jsreverse 路由 + 下一步菜单模式 + 经验库优先原则
v1.3.2 (2026-09-12) — Web/JS 逆向全自动工作流
- 像 IDA/JEB 一样自动拉起工具链:说"分析这个站的加密参数"即触发——自动探测 Burp(9876)→ 未运行自动启动 MCP_Burp.bat 并轮询就绪(150s)→ 自动连 MCP → 无流量自动拉起走 Burp 代理的隔离浏览器(Chrome/Edge 自动探测 + 独立 user-data-dir 保证代理生效 + 忽略证书告警)→ 后台轮询等流量(90s)→ AI 接手按 ctf-jsreverse 五阶段分析
- 新增 IPC:burp-probe(TCP 快探)/ open-proxy-browser(代理浏览器);新增 web 配置组(浏览器路径/Burp 代理端口,设置页可视化)
- .js/.mjs/.html 拖入即走 Web 流程(JS 原文自动存 evidence);
burp 启动现在启动后自动连接 MCP - 逻辑单测:路由正则触发/不触发用例、历史空判断(结构化 JSON 检测,10 用例)、浏览器候选探测
v1.3.1 (2026-09-12) — Burp MCP 实装完成
- 本地 Burp 2025.11.2 全链路实装官方 MCP Server 扩展(burp-suite v1.1.2):jar 下载 → mcp_user_options.json 免 GUI 自动加载(MCP_Burp.bat 追加 --config-file)→ GUI 勾选 Loaded/Enabled/历史免审批
- 客户端重写为双传输自适应(auto:先 Streamable HTTP 社区扩展,失败转经典 SSE 官方扩展);SSE 端点路径多候选(/sse 与 /);notification 不占 pending 超时;URL 变更自动重置传输探测
- 实测:9876 监听 ✓、initialize/tools/list 握手 ✓、27 个工具全部发现(get_proxy_http_history / send_http2_request / get_scanner_issues / Repeater / Collaborator / 编解码)
- 参数适配单测 6 场景全过;tools.burp 默认启动器改为 MCP_Burp.bat
v1.3.0 (2026-09-12)
Burp MCP 集成 + JS 逆向能力(工作思路参考 reverse-skill 与 hello_js_reverse_skill,择优吸收):
- Burp MCP 客户端(逻辑名映射:history/message + 任意工具透传),MCP 栅格/工具区/聊天命令三处入口;.bat/.vbs 启动器支持
- 新增 ctf-jsreverse 技能:五阶段流程、路径A算法追踪四板斧、路径B环境伪装、JSVMP/瑞数/obfuscator 判型、案例坑库
- 验证闭环支持 node_js 契约:AI 还原的 JS 函数本地 node 复现(修复 argv 取参 bug 并端到端实测)
- 全局经验库:解题成功自动入库(内容级去重)/
经验 <内容>手动回写 /查经验查看 / 自动注入 AI 系统提示(近15条) - 参考来源:reverse-skill(MIT)
v1.2.2 (2026-09-12)
第三轮复审(CSS/UI 层 + 知识库技术细节):
- P1:Frida 输出面板换行丢失+长 hex 行被裁剪(补 pre-wrap/break-all);日志长 token 同样裁剪;聊天气泡长 base64/哈希撑破面板 + 行内 code 无样式
- P2:流式光标闪烁动画;"分析结果"tab 标题/段落/flag 候选排版(此前被全局 margin 归零挤压);说明书 help-note 提示框样式;移除分析 tab 双层嵌套 padding;MainActivity 识别支持 activity-alias;自动求解中止提示优化;findings.json 串行化写队列防并发交错
- 知识库:SM4 描述修正(非平衡 Feistel);7 个 SKILL.md 机器校验(frontmatter/代码围栏闭合/交叉引用/乱码)全部通过;密码学常量与反调试偏移逐项人工复核
v1.2.1 (2026-09-12)
系统性架构+知识库复审(独立代理交叉审查)修复:
- P0:PE/ELF"详细分析"传入空对象导致
otherFunctions.lengthTypeError,Tool-Use 深度分析必挂 - P1:CSP 使内联 onclick 失效(清空日志按钮同时会折叠面板);解密模板中 xxtea 实现错误(TEA 风格轮函数,解出乱码)改为正确 MX 算法;
[VERIFY]/[HYPOTHESES]契约解析遇 custom 代码中的}/]截断(改匹配闭合标签);Python 求解器契约改 base64 内嵌(三引号守护本就无效) - P2:验证命中只标命中 flag;AI 中止显示为提示而非错误;聊天路由 pe/tea/md5/crc 等改词边界("open/steal"不再误触发);移除 data-collapse 死代码;grep 默认根目录对齐工作目录;browser_search/open 从占位接为真实调用;流式重试不再造成文本重复;PYC 魔数收紧(校验第 2 字节 0x0D);移除无效 defaultFilter;kali 启动失败如实报错;Frida 17 API 兼容 shim 内置到全部模板;设置页新增"测试AI连接";安装 APK 前设备就绪轮询
- 知识库:ctf-crypto-identify 契约算法清单与求解器实现对齐;ctf-frida-dynamic 补充 Frida 17+ API 变更说明
v1.2.0 (2026-09-11)
- Agent Skills 引擎:7 个内置中文方法论 skill(写题解/Android/二进制/算法识别/反调试/Frida/调度),AI 经
read_skill按需加载,用户可自装 - CASE 证据体系:每题独立目录(evidence/scripts/timeline.jsonl/findings.json),MCP 采集物自动落盘
- 验证闭环:
[VERIFY]契约 → 自动生成 Python 本地复现 → flag 标注 ✅已验证/⚠️未验证 - 本地枚举:
[HYPOTHESES]契约 → 组合枚举一键跑完(TEA/XTEA/XXTEA/RSA字节序/密钥编码歧义等),验证失败自动触发 - WP 双轨:模板轨升级为 findings 驱动(证据清单+验证状态自动填充);AI 轨(
aiwp)按 ctf-writeup 技能产出提交级题解,失败自动回退 - 参考 ljagiello/ctf-skills(MIT)与 anthropics/skills 的 SKILL.md 组织方式
v1.1.0 (2026-09-11)
缺陷修复
- 修复 JEB MCP 一键启动读取错误配置键(
mcp.jeb→mcp.jebMcpScript)的问题 - 修复聊天/日志/Frida 输出的 HTML 注入(XSS)漏洞
- 修复 MainActivity 误识别:现在精确解析 Manifest 中的 LAUNCHER activity
- 修复 APK 自动分析结果虚假成功提示:每步真实汇报 ✅/❌
- 修复 PYC 魔数只认旧版本、
.zip一律当 APK、kali-stop-vm 空 vmx 等问题 - 修复设置保存丢失 nox_path/mcp/kali 配置段、WP 保存后脚本类型错乱等问题
健壮性与体验
- AI 回复 SSE 流式输出 + 发送按钮一键停止
- JEB/IDA MCP 连接改为就绪轮询;模拟器等待不再固定 60 秒
- 429/5xx 指数退避重试;
max_tokens可在设置中调整(默认 8192) saveScript实现系统保存对话框;聊天工具栏按钮接线;新增"分析结果"标签页- 设置页新增 AI 接口 / MCP 地址 / Kali SSH / 输出目录 配置
- 硬编码路径与端口(frida 27042、ADB 62025、scripts 目录、VS Code、JEB MCP 脚本)全部进配置
解题能力扩展
- 文件分流新增:JAR/.class(jadx)、.NET(dnSpy/ilspycmd 指引)、Unity IL2CPP(Il2CppDumper 指引)、Lua 字节码(unluac)、Mach-O 指引
- 解密模板新增:SM4、3DES、自定义码表 Base64、RSA(小指数/factordb/Wiener/共模)、Z3、angr
- 新增 Windows PE 反调试绕过 Frida 脚本、smali 重打包签名批处理脚本
- RC4 动态脚本参数化(模块名/RVA 弹窗输入,不再硬编码 2.exe)
- WP 报告增强:多格式 flag 提取(flag/ctf/NSSCTF/SCTF…)、关键结论区块、真实连接状态
- flag 统一提取函数,支持
[FLAG]...[/FLAG]输出契约
安全加固
- adb/frida/launch-tool/vmrun 全部改为 spawn 参数数组,消除命令注入面
- Kali SSH 改用 ssh2 库(原 sshpass 方案在 Windows 不可用);密码不再写死在源码
shell.openExternal仅允许 http/https;新增 CSP;FontAwesome 加 SRI- 工具输出统一 8000 字符截断(IPC 与 AI 上下文双重保护)
v1.0.0 (2026-07-23)
- 初始版本发布
- 支持文件拖入和自动识别
- 集成 IDA、DIE、JEB、jadx、UPX、apktool、pycdc 等工具
- Frida Hook 脚本生成(基于ctf-agent模板)
- Python 解密脚本生成(支持多种算法)
- 反调试绕过脚本生成(支持多种绕过技术)
- 响应式窗口布局
许可证
MIT License
Yorumlar (0)
Yorum birakmak icin giris yap.
Yorum birakSonuc bulunamadi