zh/jsr-reverse/SKILL.md
Use when a Web JS reverse task has unclear phase selection, mixed source-chain and shell blockers, runtime divergence, validation-only work, or RS/瑞数 clues such as 412, cookie hops, sign, token, JSVMP, worker, wasm, hasDebug, or basearr.
npx skillsauth add 715494637/reverse-skill jsr-reverseInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
jsr-reverse 是中文侧 Web JS 逆向的默认唯一入口 skill。
它负责维护这一条工作主干:
intake -> evidence -> locate -> recover -> runtime -> validation -> handoff
使用它时要做到:
evidence 与 handoff 保留在 jsr-reverse 内,不拆成独立 skilllocate、recover、runtime、validation412、token、worker、basearr、protobuf、JSVMP、wasm、hasDebug 这类线索只能帮助挑选辅助 reference,不能代替阶段选择。
intake:归一化目标请求、触发动作、目标、约束。evidence:在阶段路由前先证明真实请求链,并更新项目记录。locate:证明真实写入边界、sink 与上游依赖链。recover:压缩壳层,直到后续所需的逻辑契约可读、可跟、可调用。runtime:解释浏览器执行与本地/受控执行的首个真实分叉,并拟合最小运行时依赖集。validation:证明等价性、检查点与最终一致性。handoff:输出当前阶段判断,以及下一份必须更新的工件。允许快速分诊,但它只能用于加速这条主干中的阶段选择,不能替代主干本身。
从这个输入块开始:
URL 或目标页面:
目标请求 / 字段 / cookie / 消息:
触发动作:
当前现象:
已有证据:
目标:
约束:
完成 intake 后,用工程语言总结现状:
只要满足下面任一条件,就要先经过这个 gate,再做阶段路由:
这个 gate 仍属于 jsr-reverse,不是独立 skill。
当 gate 触发时,必须先更新 reverse-records/请求链路.md,再选择后续阶段。
请求链判断格式与记录细节见 references/request-chain-recording.md。
locate目的
证明目标请求、字段、cookie 或消息的真实写入边界、sink 与上游状态链。
进入条件
应做
reverse-records/请求链路.md产出
退出条件
sink 与上游链已经真实到足以让下一个阻塞变成壳层压缩,而不是继续找请求。
不要进入当
不要做
recover目的
围绕已证明的边界压缩壳层,直到后续工作所需的逻辑契约足够可读、可追踪或可调用。
进入条件
worker、wasm、webpack bootstrap、协议包络等壳层逻辑应做
产出
退出条件
壳层已经压缩到足以让下一个阻塞变成环境拟合或一致性证明,而不再是代码遮蔽。
不要进入当
不要做
runtime目的
解释并缩小浏览器执行与本地/受控执行之间的首个有意义分叉。
进入条件
应做
产出
退出条件
运行时分叉已经解释清楚,剩余工作变成等价性证明或最终一致性检查。
不要进入当
不要做
validation目的
证明恢复路径、运行时拟合或复现输出在检查点和最终输出两个层面上都可辩护。
进入条件
应做
产出
退出条件
证明已经具体到让下一位接手者能看清:哪些已解决,哪些仍未解决。
不要进入当
不要做
路由永远分两步。
从当前工程状态选阶段:
locaterecoverruntimevalidation快速示例:
412、403、cookie hop、token,只要真实链路还没证实,仍然先路由到 locateworker、wasm、protobuf、JSVMP 只有在 locate 边界已经跨过后,才支持路由到 recoverbasearr、hasDebug 只有在边界已清楚且问题确实是环境分叉时,才支持路由到 runtime阶段选定后,读取:
不要反过来。不要先选 reference 再倒推阶段。
topic reference 必须在阶段确定后再挂载。evidence artifact reference 只在 evidence gate 触发时单独使用。
locate core:references/locate-workflow.mdrecover core:references/recover-strategy.mdruntime core:references/runtime-diagnosis.mdvalidation core:references/equivalence-and-validation.mdreverse-records/请求链路.md 时,使用 references/request-chain-recording.md。它是证据工件 reference,不是 topic mount。先读 core,再补最多 1-2 份与当前阻塞匹配的 topic reference:
references/crypto-entry-locating.md:locate 阶段中与 sign、token、动态 header、加密请求字段相关references/hook-and-boundary-patterns.md:locate 阶段中的 hook、断点、initiator、边界观察references/jsvmp-and-ast.md:recover 阶段中的 JSVMP、dispatcher loop、flattening、AST 重壳references/ast-deobfuscation-playbook.md:recover 阶段中的字符串表恢复、helper inline、AST 变换、bundle 拆包references/wasm-worker-webpack.md:recover 阶段中的 worker、wasm、webpack/runtime、bootstrap、loaderreferences/protocol-and-long-connection.md:在阶段选定后,作为跨阶段 topic 处理 WebSocket、protobuf、SSE、heartbeat、ack、renewalreferences/anti-debug-and-risk-branches.md:runtime 阶段中的反调试或分支翻转references/minimal-env-design.md:runtime 阶段中的最小环境设计references/sdenv-fit-check-and-routing.md:runtime 阶段中的生命周期状态、导航状态、回放路径RS 线索不能代替阶段选择。
412、403、挑战页、meta[r=m]、r2mKa、$_ts、$_ts.l__、首跳/二跳 cookie、hasDebug、basearr 只用于帮助挑选辅助 referencereferences/rs-collection-and-two-hop-routing.md:locatereferences/rs-recovery-anchors.md:recoverreferences/rs-runtime-and-basearr-fit.md:runtime协议类问题可能跨多个阶段出现。只有在阶段已经选定后,才挂协议 reference。
reverse-records/请求链路.md,再输出路由阶段。reverse-records/请求链路.md。jsr-reverse/references/*。每次完成路由后,始终输出下面这个块:
Current stage:
Why this stage now:
Read now:
Required artifact:
Exit condition:
要求:
Why this stage now 必须解释工程状态,不能只重复线索词。Read now 必须包含恰好 1 份 core reference,再加至多 1-2 份 topic reference。Required artifact 必须指出下一份必须更新的工件或阶段产出。Required artifact 保持 reverse-records/请求链路.md,并在其中追加当前阶段结论。Current stage: locate
Why this stage now: 目标请求仍有一部分停留在猜测,上游 cookie 依赖还没有被真实抓包证实,团队也还没有稳定的 token 写入边界。
Read now: references/locate-workflow.md + references/request-chain-recording.md + references/crypto-entry-locating.md
Required artifact: reverse-records/请求链路.md
Exit condition: 目标请求、上游依赖链与 token 写入边界都已由真实证据证实。
Current stage: recover
Why this stage now: 请求链与写入边界都已真实,但可用逻辑仍被 worker bootstrap 与打包 helper 层遮住,因此当前阻塞是壳层压缩而不是 runtime 拟合。
Read now: references/recover-strategy.md + references/wasm-worker-webpack.md
Required artifact: 面向目标边界的 worker/bootstrap 恢复契约
Exit condition: 壳层已压缩到足以让下一个阻塞变成 runtime 拟合或 validation,而不是隐藏控制流。
Current stage: runtime
Why this stage now: sink 与壳层边界已清楚,但本地执行在消费浏览器生命周期状态后,于一个固定环境依赖分支发生分叉。
Read now: references/runtime-diagnosis.md + references/minimal-env-design.md + references/rs-runtime-and-basearr-fit.md
Required artifact: 首个分叉点说明与最小运行时依赖集合
Exit condition: 首个分叉与最小拟合集合已经具体到足以进入 validation。
412、token、worker、basearr、protobuf 等线索词直接决定阶段。reverse-records/请求链路.md。development
Use when a Web JS reverse task has unclear phase selection, mixed source-chain and shell blockers, runtime divergence, validation-only work, or RS/瑞数 clues such as 412, cookie hops, sign, token, JSVMP, worker, wasm, hasDebug, or basearr.
tools
通过 chrome-devtools-mcp 连接真实浏览器,跟踪 sign/enc/token 的生成链路,识别运行时入口函数与依赖,然后生成 JSRPC 注入代码、Flask 代理代码以及带校验输出的 Burp autoDecoder 对接文档,本skills只生成对应的代码,不会对未授权目标进行测试。
tools
定位 JS 中参数的生成入口。当用户问"xxx 参数在哪生成"、"找加密入口"、"定位签名函数"、"请求参数怎么加密的"时使用
tools
通用 JS AST 解混淆。当用户说"解混淆"、"还原代码"、"反混淆"、"deobfuscate"、"代码看不懂全是_0x"时使用