Fausto-404/js-reverse-automation--skill

GitHub: Fausto-404/js-reverse-automation--skill

一个基于MCP和Skill规范的前端JS逆向自动化分析工具,通过JSRPC加Flask加autoDecoder方案实现从加密函数定位到服务生成的全流程自动化。

Stars: 542 | Forks: 78

js-reverse-automation--skill

前端JS逆向全流程自动化Skill

Release GitHub Stars GitHub Forks Downloads

结合chrome-devtools-mcp的能力并加上Skill的规范,实现JSRPC+Flask+autoDecoder方案的前端JS逆向自动化分析,提升JS逆向的效率

## 适用场景 - 登录参数加密(RSA/AES/SM2/SM4/MD5/自定义编码) - 数据爬取时响应内容加密 - 请求签名(sign/token/enc) - 需要将js逆向逻辑封装为可复用的代码 - 需要与 Burp 配合进行抓包、改包 ## 解决传统 AI 逆向的四大痛点 本项目专注于 **实战工程落地** ,通过更轻量的架构打通逆向到实战的最后一公里: * **从“死磕补环境”到“JSRPC 动态榨取”** : 不强求 AI 去补全复杂的浏览器上下文,而是指导 AI 建立 JSRPC 远程调用。直接将真实浏览器作为算法解析器,绕过混淆逻辑,0 成本获取加密结果。 * **从“孤岛式输出”到“全链路生产交付”** : 拒绝只停留在“看懂代码”阶段。AI 交付的不仅是解析思路,更是直接可运行的 **Python Flask 中转服务** 与 **Burp Suite (autoDecoder) 联动配置**,无缝接入渗透工作流。 * **从“单阶段盲跑”到“契约化阶段校验”** : 引入明确的 Phase 0-9 阶段划分,以 `analysis_result.json` 作为中间产物契约。在生成代码后强制触发本地验证器校验,大幅降低 AI 在复杂长文本下的幻觉与语法错误。 * **从“单次对话记忆”到“经验持续演进”** : 打破“新对话即白纸”的限制。利用 `references/evolution_matrix.json` 记忆库,允许 AI 跨任务沉淀对抗经验,实现技能包针对新型混淆与反调试的持续自我演进。 ## 流程设计思路 针对js逆向中常用的远程调用法进行js逆向(如JSRPC+Mitmproxy、JSRPC+Flask等)中,初始配置阶段中面对的定位加密函数、编写注册代码、编写python代码等繁琐操作,通过引入AI的MCP和Skill技术进行赋能,让AI自动完成函数发现与注册代码生成,最终实现从“半自动”到“高自动”的跨越,人员全程只需下方指令,并最终配置一下burp即可完成JS逆向的全流程。 image ## 核心能力 - 基于 MCP 连接真实浏览器,触发并跟踪js加密/签名链路 - 运行时 Hook 探针:自动捕获 fetch/XHR/crypto/WebSocket/CryptoJS/JSEncrypt/sm2/sm3/sm4 调用栈和参数流转 - Webpack 模块解析:自动发现 `__webpack_require__`,搜索 module cache 中的加密函数 - 候选评分系统:8 维度评分 + 真实样本验证,降低误判 - 差分验证:主动调用候选函数,比对请求字段指纹,确保准确性 - 证据图构建:SHA-256 指纹关联 producer→consumer,追踪数据流 - 全自动服务管理:JSRPC 服务器自动发现/启动,Flask 代理自动启停 - 一键注入:代码生成 + 浏览器注入 + 注册验证全自动 - Burp 无缝对接:生成 autoDecoder 配置文档,支持端到端联调 ## 项目结构 js-reverse-automation/ ├── SKILL.md # 入口文件(精简版) ├── workflow/ │ └── pipeline.md # 详细工作流(Phase 0-9) ├── constraints/ │ └── rules.md # 约束规则 ├── references/ # 参考规范与知识库(按需加载) │ ├── output-contract.md # 输入输出契约 │ ├── capability-boundaries.md # 能力边界说明 │ ├── architecture.md # 架构说明 │ ├── security-model.md # 安全模型 │ ├── antidebug-patterns.md # 反调试模式与 Patch │ ├── advanced-entrypoints.md # 复杂入口场景(Webpack/异步/WASM) │ ├── evidence-collection.md # 取证方法(Hook/源码/网络) │ └── evolution_matrix.json # 跨任务经验记忆库 ├── schemas/ # JSON Schema 定义 │ ├── analysis_result.schema.json │ ├── candidates.schema.json │ └── probe_dump.schema.json ├── scripts/ # 自动化工具脚本 │ ├── common.py # 共享工具库 │ ├── check_inputs.py # 输入校验 │ ├── emit_runtime_hook_probe.py # 运行时 Hook 探针生成 │ ├── emit_module_probe.py # Webpack 模块探针生成 │ ├── build_evidence_graph.py # 证据图构建 │ ├── detect_encryption.py # 加密函数候选评分 │ ├── differential_verifier.py # 差分验证 │ ├── emit_jsrpc_stub.py # JSRPC 注入代码生成 │ ├── emit_flask_proxy.py # Flask 代理生成 │ ├── emit_burp_doc.py # Burp 文档生成 │ ├── manage_services.py # 服务管理(JSRPC/Flask 启停) │ ├── validate_artifacts.py # 四层校验 │ ├── quarantine.py # 隔离报告 │ ├── doctor.py # 依赖检查 │ ├── env_patcher.py # 环境补丁 │ ├── classify_anticrawl.py # 反爬分类 │ ├── identify_crypto.py # 加密算法识别 │ ├── hook_templates.py # Hook 模板库 │ ├── ast_candidate_analyzer.js # AST 静态分析 │ └── JsEnv_Dev.js # Hlclient WebSocket 客户端库 ├── generated/ # AI 运行生成的中间代码/配置产物 │ ├── jsrpc_inject.js # JSRPC 浏览器端注入代码 │ ├── flask_proxy.py # Flask 本地代理服务 │ ├── burp-autodecoder.md # Burp autoDecoder 配置文档 │ └── runtime_hook_probe.js # 运行时 Hook 探针脚本 └── artifacts/ # 运行时的动态状态与报告产物 ├── phase0_input.json # 校验后的输入 ├── probe_dump.json # 运行时事件数据 ├── module_dump.json # Webpack 模块发现结果 ├── evidence_graph.json # 事件关联图 ├── encryption_candidates.json # 加密函数候选评分 ├── validation_report.json # 四层校验报告 ├── quarantine.json # 隔离报告 ├── jsrpc_status.json # JSRPC 服务状态 #### └── flask_status.json # Flask 服务状态 ## 使用示意 1. 安装 MCP 服务 ```bash # Claude Code claude mcp add chrome-devtools -- npx -y chrome-devtools-mcp@latest # Codex codex mcp add chrome-devtools -- npx -y chrome-devtools-mcp@latest # Gemini #### gemini mcp add chrome-devtools npx -y chrome-devtools-mcp@latest #### 2. 将 `js-reverse-automation` 目录放入 Skill 目录,然后输入: # 第一次建议带上jsrpc路径,后续流程会更稳 Target URL: https://xxx.com/login Parameters To Analyze: password #### Optional Fetch Example: fetch("https://xxx.com/api/login", {"body":"...","method":"POST"}) 等待运行完成【第一次使用会生成产物文件夹】,按输出结果,验证有效性以及配置 Burp 即可。 ## 效果检验 1. 获取输入所需信息【参考如图1、2、3】 image 2. 按照模版编写提示词并输入给claude【本次使用的是去除安全限制的claude + mimo-v2.5验证,旨在验证降低模型要求,skills实现效果不变】 image 3. 等待输出结果 image 4. 依据结果输出测试即可 image 5. 使用完后记得按照指示关闭jsrpc和flask!!! ## 实战案例 - xx大学:MD5(全局函数) ✅ - xx大学:SM2 国密 + DOM 公钥 ✅ - xx网:RSA-2048 + JSEncrypt 懒加载 ✅ - xx游:RSA-1024 + Webpack 闭包 ✅ - 某音乐:AES & RSA 组合 + params / encSecKey 类结构 ✅ - 某理工学院:RSA-1024 + React 组件 encodePass ✅ - xx鱼:RSA-1024 + 全局 miniLogin.rsaPassword ✅ - xx神:RSA-1024 + 模块内部加密(源码分析) ✅ ## 引用工具 - JsRpc:https://github.com/jxhczhl/JsRpc - autoDecoder:https://github.com/f0ng/autoDecoder - chrome-devtools-mcp:https://github.com/ChromeDevTools/chrome-devtools-mcp/ ## 更新日志 ### v1版本更新记录 - 2026-05-21: 引入 Phase 9 经验沉淀与对抗库演进 - 2026-04-10: 补强请求复现、参数入口定位、反检测验证能力 - 2026-03-19: 添加对抗 AI 识别为高风险操作的能力 - 2026-03-10: 重构为"主控文件 + 参考规则 + 生成器 + 校验器"架构 - 2026-02-11: 新增 11 个反调试补充技能 - 2026-02-03: 优化项目结构,支持 Claude/Codex/Trae 平台 ### v2.0 (2026-05-31) - **架构优化**:阶段流程从 Phase 0-9 精简为 Phase 0-8,消除冗余步骤,token 消耗减少约**40%** - **全自动化**:JSRPC 自动发现/启动、Flask 自动启停、浏览器自动注入,**全程只需配置 Burp** - **更强入口定位**:运行时 Hook 探针 + Webpack 模块解析 + 7 维度候选评分,提供更强大、更快速的入口定位能力,**对模型要求降低** - **更稳定输出**:capability_boundary 显式声明不支持场景、runtime_health 健康检测、候选验证机制 ### v2.1 (2026-07-28) - **Fetch Example 分析**:提供 Fetch Example 后自动提取加密算法、参数格式,跳过网络捕获,效率提升 - **证据驱动**:SHA-256 指纹关联、证据图构建、差分验证,从"可能对"变成"确认对" - **扩展 Hook**:WebSocket/Request/TextEncoder/btoa/CryptoJS/JSEncrypt/sm2/sm3/sm4,覆盖更多加密场景 - **降级策略链**:5 级降级,不轻易放弃,模块内部加密也能处理 - **四层验证**:Schema + 静态 + 候选不变量 + 跨文件一致性 - **Token 优化**:SKILL.md 精简 84%,参考资料按需加载,初始加载总 token 约减少 95% - **新增工具**:反爬分类、加密算法识别、Hook 模板库、环境补丁、AST 分析、隔离报告
标签:BeEF, Chrome DevTools, Flask, JSRPC, JS逆向, 前端逆向, 数据可视化, 爬虫, 网络调试, 自动化, 逆向工具