| name | jsreverser-mcp-playbook |
| description | 在使用 MCP 做前端 JavaScript 逆向时使用,适用于签名链路定位、页面观察取证、本地补环境复现、VMP 类插桩分析、AST 去混淆与证据化输出。 |
MCP 前端 JS 逆向作业规范
定位说明:
skills/jsreverser-mcp-playbook/references/* 是 AI 快速执行版,用于任务中按需快速读取。
docs/reference/* 是 正式权威版,适合源码或已打包安装场景与仓库外部查阅。
- 如果两者表述出现差异,以
docs/reference/* 为准。
核心原则
Observe-first
Hook-preferred
Breakpoint-last
Rebuild-oriented
Evidence-first
Task-driven
先页面观察,再最小化采样,再做本地补环境,不要跳过取证直接猜环境。
目标场景
默认主场景是:
- 定位接口签名、加密参数、关键请求字段
- 在页面里确认哪个请求、哪个脚本、哪个函数参与参数生成
- 导出本地复现材料
- 在 Node 里按“代理 env log + first divergence + 最小因果单元”补环境跑通
- 跑通后再做 AST 去混淆、VMP 插桩或逻辑提纯
五阶段工作流
1. Observe
目标:
默认入口:
docs/reference/reverse-bootstrap.md
references/automation-entry.md
references/mcp-task-template.md
必须产出:
- 目标请求
- initiator 线索
- 可疑脚本 URL / scriptId
- 初始 task artifact
2. Capture
目标:
- 对目标请求做最小侵入采样,拿到参数样例、调用顺序、运行时证据。
规则:
- 优先 fetch/xhr hook
- 如果目标发生在首屏初始化、首个请求前参数装配、页面首次执行阶段,先用
inject_preload_script 挂早期采样或补环境脚本
- 命中后先看 summary,再按需看 raw
- Hook 不足时再考虑断点
3. Rebuild
目标:
- 把页面证据导出为本地可迭代的 Node 复现工程。
参考:
references/local-rebuild.md
references/task-artifacts.md
- 正式规范:
docs/reference/reverse-workflow.md
规则:
- 本地补环境必须以页面观测证据为依据
- 不允许空想式补
window/document/navigator/crypto/storage
4. Patch
目标:
- 按代理日志和
first divergence 驱动补环境,直到本地脚本能稳定跑出目标参数。
规则:
- 先读代理 env log,再记录当前
first divergence
- 一次只做一个补丁决策,不是机械地一次只改一个属性
- 一个补丁决策对应一个最小因果单元:值 / 函数壳 / 返回对象 / 最小对象契约
diff_env_requirements 仅作辅助,不替代代理日志
- 每次补丁后立即复测,并记录
first divergence 是否前移
- 每次补丁都写入 task artifact
- 快速执行版看
references/env-patching.md,正式规范以 docs/reference/env-patching.md 为准
5. DeepDive
目标:
- 本地跑通后,再做去混淆、VMP、控制流还原、业务逻辑提纯。
规则:
- 如果当前任务只是出签名,这一阶段可以降级
- 如果要长期复用算法链路,这一阶段必须做
- 进入纯算法提纯阶段时,优先读取
docs/reference/pure-extraction.md
场景路由
Task-driven 工具路由
当 MCP 已暴露 reverse task 工作流工具时,默认优先按下面顺序选工具,而不是先读参数 workflow 文档:
- 新建任务
- 查状态 / 摘要 / timeline / compare / tag / update
- 自动决定下一步并连续推进
- 一键跑“定位函数 -> 最小切片 -> pure 草稿 / port-ready 草稿”
- 导出最少交付文件
- 只查看参数蓝图 / 案例 workflow
get_parameter_workflow
list_parameter_workflows
recommend_parameter_workflow
关键约束:
get_parameter_workflow 只是蓝图/文档工具,不是默认执行入口
- 用户真正想“继续逆向任务”时,优先
manage_reverse_task / orchestrate_reverse_task
- 用户真正想“直接提 pure / port-ready”时,优先
run_reverse_agent
- 用户真正想“压缩交付文件数量”时,优先
export_portable_bundle
常见入口选择
-
用户说“继续这个 task / 看看现在到哪一步了”
- 先
manage_reverse_task with action="summarize"
-
用户说“帮我自动推进 / 继续跑”
-
用户说“直接把 pure 草稿做出来 / 出 port-ready”
-
用户说“最后只想带最少文件”
-
新任务开场:
- 先读
docs/reference/reverse-bootstrap.md
- 再读
references/automation-entry.md
-
进入补环境:
- 先读
references/env-patching.md
- 正式规范以
docs/reference/env-patching.md 为准
-
进入本地复现:
- 先读
references/local-rebuild.md
-
进入纯算法提纯:
- 读
docs/reference/pure-extraction.md
-
遇到版本升级 / first divergence 漂移:
- 读
docs/reference/algorithm-upgrade-template.md
-
写结论与报告:
- 先读
references/output-contract.md
- 模板以
docs/reference/reverse-report-template.md 与 docs/reference/reverse-update-prompt-template.md 为准
执行要求
- 所有重要步骤都要写入本地 task artifact
- 如果无法解释为什么调用某个工具,就不要调用
- 输出必须满足
references/output-contract.md
- 失败时按照
references/fallbacks.md 回退
- 参数默认值按
references/tool-defaults.md
skills/references/cases/* 只允许抽象 case(映射/判定口径)
- 站点级可复用流程统一维护在
scripts/cases/*,不要把实操工作流写回 skills/references/cases/*
- 新增正式文档时遵循仓库分层:规则/模板放
docs/reference/,人类教程放 docs/guides/,公开参数索引更新 scripts/cases/README.md
响应读取协议
当调用 manage_reverse_task / orchestrate_reverse_task / run_reverse_agent / get_rebuild_health_report 后,优先按这个顺序理解结果:
responseSummary
outcome / status
errorType / retryable / blockedBy
routeGuard
continuation
fallbackPlan / agentGuidance / compactDelivery
执行规则:
continuation.ready=true:优先继续执行 continuation.invoke
outcome=blocked:先解决 blockedBy,不要硬跑下一跳
outcome=partial 且 retryable=true:优先 resume / 续跑
shouldSwitchStrategy=true:优先换 strategy,不要机械重试
continuation.ready=false:停止自动执行
- 如果
compactDelivery.portablePureReady / portableReplayReady 已就绪,可以直接提示用户导出或使用便携产物
外部客户端 system prompt 建议
如果客户端不支持 skill 机制,就把下面这条短提示直接塞进 system prompt:
JSReverser-MCP 默认不是先看 get_parameter_workflow。
优先级:
1. 新任务 -> start_reverse_task
2. 查状态/摘要/更新/timeline -> manage_reverse_task
3. 自动推进 -> orchestrate_reverse_task
4. 一键 pure/port-ready -> run_reverse_agent
5. 最小交付导出 -> export_portable_bundle
6. 只有用户明确要看参数蓝图/案例文档时,才用 get_parameter_workflow
读取结果时:
先看 responseSummary,再看 outcome/status,再看 errorType/blockedBy/retryable,再看 routeGuard,最后看 continuation.invoke。
如果 continuation.ready=true,优先继续执行 continuation.invoke。
必读引用
- 自动化入口:
references/automation-entry.md
- 参数默认值:
references/tool-defaults.md
- 任务输入模板:
references/task-input-template.md
- MCP 专用任务编排:
references/mcp-task-template.md
- 任务产物:
references/task-artifacts.md
- 本地复现:
references/local-rebuild.md
- 补环境:
references/env-patching.md、references/node-env-rebuild.md
- 插桩:
references/instrumentation.md
- AST 去混淆:
references/ast-deobfuscation.md
- 回退:
references/fallbacks.md
- 输出契约:
references/output-contract.md
- 案例库:
references/cases/
配套模板
- 更新提示词:
docs/reference/reverse-update-prompt-template.md
- 报告模板:
docs/reference/reverse-report-template.md
- 算法升级 / first divergence:
docs/reference/algorithm-upgrade-template.md