项目地址
https://github.com/Fausto-404/js-reverse-automation--skill
js-reverse-automation--skill
结合 chrome-devtools-mcp 的能力并加上 Skill 的规范,实现 JSRPC+Flask+autoDecoder 方案的前端 JS 逆向自动化分析,提升 JS 逆向的效率。
适用场景
- 需要快速落地前端签名/加密参数逆向
- 需要将 js 逆向逻辑封装为可复用的代码
- 需要与 Burp 配合进行抓包、改包
流程设计思路
针对 js 逆向中常用的远程调用法进行 js 逆向(如 JSRPC+Mitmproxy、JSRPC+Flask 等)中,初始配置阶段中面对的定位加密函数、编写注册代码、编写 python 代码等繁琐操作,通过引入 AI 的 MCP 和 Skill 技术进行赋能,让 AI 自动完成函数发现与注册代码生成,最终实现从'半自动'到'高自动'的跨越。人员全程只需下发指令,并最终配置一下 burp 即可完成 JS 逆向的全流程。

核心能力
- 基于 MCP 连接真实浏览器,触发并跟踪 js 加密/签名链路
- 自动定位
sign / enc / token等关键参数生成入口 - 自动生成 JSRPC 注入与注册代码
- 自动生成 Python Flask 代理代码
- 输出 Burp
autoDecoder对接说明,支持端到端联调 - 支持 AntiDebug_Breaker 的 11 项反调试能力
项目结构
js-reverse-automation--skill/
├── README.md # 项目说明、使用方式、更新说明和结构说明。
├── SKILL.md # Skill 主控文件。只负责定义任务如何被触发、必须输入什么、流程怎么分阶段、输出和验收怎么要求。
├── agents/
│ └── openai.yaml # Skill 的 agent 入口配置。负责定义默认提示词、默认输入格式和执行约束。
├── artifacts/ # 运行期目录,用来承接流程中间产物和最终校验报告。
│ ├── artifacts/phase0_input.json # 规范化后的输入
│ ├── artifacts/phase1_trace.json # 浏览器链路复现结果
│ ├── artifacts/phase2_entrypoints.json # 参数入口识别结果
│ ├── artifacts/phase3_dependencies.json # 依赖、上下文和调用方式提取结果
│ └── artifacts/validation_report.json # 最终校验报告
├── references/
│ ├── references/workflow-recon.md # 阶段流程说明书。
│ ├── references/output-contract.md # 输入输出契约说明书。
│ ├── references/failure-recovery.md # 失败恢复和诊断格式说明书。
│ ├── references/validation-checklist.md # 验收标准说明书。
│ └── references/antidebug/
│ ├── references/antidebug/debugger-loop.md # 处理无限 debugger、eval、Function 类问题。
│ ├── references/antidebug/console-detect.md # 处理控制台检测、日志篡改、清屏等问题。
│ ├── references/antidebug/timer-check.md # 处理时间差、性能计时、Promise 时序检测。
│ ├── references/antidebug/env-detect.md # 处理窗口大小、webdriver、UA、DevTools 检测等环境识别问题。
│ ├── references/antidebug/proxy-guard.md # 处理跳转、关闭页面、history、代理拦截等链路阻断问题。
│ └── references/antidebug/dynamic-alias.md # 处理动态别名、wrapper、resolver 型入口和不稳定路径。
└── scripts/
├── scripts/check_inputs.py # 输入校验器。
├── scripts/emit_analysis_result.py # 统一分析产物生成器。
├── scripts/emit_jsrpc_stub.py # JSRPC 代码生成器。
├── scripts/emit_flask_proxy.py # Flask 代理生成器。
├── scripts/emit_burp_doc.py # Burp autoDecoder 文档生成器。
└── scripts/validate_artifacts.py # 全链路校验器。
使用示意
这边演示使用的是 codex5.3(其他平台同理)
- 下载 skills 放置在 codex 的 skills 目录中,mac 端的路径为
/Users/用户名/.codex/skills/

- 将 chrome-devtools-mcp 服务写进 Codex 的配置
codex mcp add chrome-devtools -- npx -y chrome-devtools-mcp@latest

- 修改 Codex 的配置文件 MAC 的在
~/.codex/config.toml,添加如下字段
[mcp_servers.chrome-devtools]
command = "npx"
args = ["-y", "chrome-devtools-mcp@latest"]

- 检测是否生效

- 启动 mcp 服务,当看到打开浏览器后 MCP 服务就配置好了。
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome \ --remote-debugging-port=9222 \ --remote-debugging-address=0.0.0.0

- 在 codex 客户端中使用该 skills

- 输入所需要的信息
1、目标网址(完整 URL):
2、需要分析的加密参数名(如 sign / enc / token):
3、可复现请求示例(优先给 fetch/抓包原始请求):
4、环境限制(浏览器版本、是否需要代理/插件、是否允许注入):

- 等待程序运行完成即可

效果检验
- 启动 JSRPC

- 在浏览器开发者工具的 Console 中,执行 JSRpc 项目中的 JsEnv_Dev.js 文件内容。

- 在控制台注入 AI 生成的 jsrpc_inject_hr_ncu_password.js。

- 测试 jsrpc 调用函数是否正常,可以看到是没问题的。
http://127.0.0.1:12080/go?group=fausto&action=generate_password_md5¶m=111111

- 运行 flask_proxy_hr_ncu.py

- 测试 Flask 是否可以正常加密,可以看到也是没问题的。
curl -X POST http://127.0.0.1:8888/encode \
-H "Content-Type: application/x-www-form-urlencoded" \
--data-urlencode "dataBody=username=111111&password=111111&code=1234&role=000002"

- 最后根据 Burp autoDecoder 配置说明配置 burp 的 autoDecoder 插件,也成功加密了参数,整体成功运行完成

引用工具
- JsRpc:https://github.com/jxhczhl/JsRpc
- autoDecoder:https://github.com/f0ng/autoDecoder
- chrome-devtools-mcp:https://github.com/ChromeDevTools/chrome-devtools-mcp/
- AntiDebug:https://github.com/0xsdeo/AntiDebug_Breaker


