MCP 前端 JS 逆向作业规范
定位说明:
skills/jsreverser-mcp-playbook/references/*是 AI 快速执行版,用于任务中按需快速读取。docs/reference/*是 正式权威版,适合源码或已打包安装场景与仓库外部查阅。- 如果两者表述出现差异,以
docs/reference/*为准。
核心原则
Observe-firstHook-preferredBreakpoint-lastRebuild-orientedEvidence-firstTask-driven
先页面观察,再最小化采样,再做本地补环境,不要跳过取证直接猜环境。
目标场景
默认主场景是:
- 定位接口签名、加密参数、关键请求字段
- 在页面里确认哪个请求、哪个脚本、哪个函数参与参数生成
- 导出本地复现材料
- 在 Node 里按“代理 env log + first divergence + 最小因果单元”补环境跑通
- 跑通后再做 AST 去混淆、VMP 插桩或逻辑提纯
五阶段工作流
1. Observe
目标:
- 先确认目标请求、相关脚本、候选函数,不猜环境。
默认入口:
docs/reference/reverse-bootstrap.mdreferences/automation-entry.mdreferences/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.mdreferences/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 文档:
- 新建任务
start_reverse_task
- 查状态 / 摘要 / timeline / compare / tag / update
manage_reverse_task
- 自动决定下一步并连续推进
orchestrate_reverse_task
- 一键跑“定位函数 -> 最小切片 -> pure 草稿 / port-ready 草稿”
run_reverse_agent
- 导出最少交付文件
export_portable_bundle
- 只查看参数蓝图 / 案例 workflow
get_parameter_workflowlist_parameter_workflowsrecommend_parameter_workflow
关键约束:
get_parameter_workflow只是蓝图/文档工具,不是默认执行入口- 用户真正想“继续逆向任务”时,优先
manage_reverse_task/orchestrate_reverse_task - 用户真正想“直接提 pure / port-ready”时,优先
run_reverse_agent - 用户真正想“压缩交付文件数量”时,优先
export_portable_bundle
常见入口选择
用户说“继续这个 task / 看看现在到哪一步了”
- 先
manage_reverse_taskwithaction="summarize"
- 先
用户说“帮我自动推进 / 继续跑”
orchestrate_reverse_task
用户说“直接把 pure 草稿做出来 / 出 port-ready”
run_reverse_agent
用户说“最后只想带最少文件”
export_portable_bundle
新任务开场:
- 先读
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 后,优先按这个顺序理解结果:
responseSummaryoutcome / statuserrorType / retryable / blockedByrouteGuardcontinuationfallbackPlan / agentGuidance / compactDelivery
执行规则:
continuation.ready=true:优先继续执行continuation.invokeoutcome=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
Source: NoOne-hub/JSReverser-MCP — distributed by TomeVault.