Communitygithub.com

DQmyth/js-reverse-ops

生产级 JavaScript 逆向工程技能:基于证据的工作流程、逐字沙箱测试框架、19 个经过实战检验的剧本、136 个脚本和公开基准测试。

js-reverse-ops 是什么?

这是一个专业级的 JavaScript 逆向工程 AI 技能,旨在提供结构化的、基于证据的工作流程,而非临时的调试会话。它适用于签名恢复、离线反混淆、运行时追踪和环境重建等任务。该技能包含了 19 个经过实战检验的剧本、136 个脚本以及一套完整的核心工作流,指导用户从最小的可靠上下文开始,通过路由、运行时捕获、回放和验证等阶段,最终生成稳定的交付工件。它优先使用内置脚本,并将专业工具(如 webcrack、wakaru)限制在特定任务上,强调所有恢复的字段必须经过验证的浏览器观察或本地回放工件的支持。该公开版本移除了特定于站点的私有案例库、测试夹具和验证语料库,专注于提供通用的剧本、脚本、模板和经过清理的示例,并包含发布安全门控(Publication Safety Gate),确保不会泄露私密站点信息、凭据或密钥。

兼容平台~Claude Code~Codex CLI~Cursor✓Antigravity
npx skills add DQmyth/js-reverse-ops

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

JS Reverse Ops

将此技能用作结构化的逆向工程工作流程,而非临时的调试会话。

从这里开始

  1. NOW: 对请求进行分类(签名恢复、离线反混淆、运行时追踪、环境重建……),并仅加载该任务类型所需引用的文件。
  2. NOW: 如果工作涉及在本地运行浏览器 JS,请先阅读 references/env-rebuild-recipes.md — 其中包含 10 张配方卡(原生模拟类、类标签探测、无宿主内建函数、真实计时器、内联代理、校准预言机),可防止最昂贵的沙箱错误。
  3. NOW: 如果对依赖项或工具链存疑,请在编写探测代码前遵循 references/toolchain-bootstrap.md。
  4. NEXT: 如果重建的流程“几乎可用”(第一个令牌有效,但后续失败;返回 200 但答案错误;密钥出现无法解释的分歧),请停止探测,阅读 references/misdiagnosis-patterns.md。
  5. ACT: 进入核心工作流的匹配阶段并执行 — 不要在确认后停止。

范围

本次公开发布保留:

  • 针对 定位、运行时、恢复 和 回放 的基于阶段的编排
  • 用于提取、运行时捕获标准化、回放搭建和工件生成的可重用脚本
  • 针对浏览器驱动型 JavaScript 逆向工程的通用参考、规则和模板

本次公开发布有意排除:

  • 私有的或特定于站点的案例库
  • 捕获的测试夹具和验证语料库
  • 与命名站点相关的具体基准测试目标、凭据和回放注释

核心工作流

从最小的可靠上下文开始:

  • 未知目标:运行 node scripts/js_reverse_ops.js <target-url-or-file> [--json]
  • 已有注释、hook 日志或失败摘要:运行 node scripts/map_case_to_pattern.js <notes.md> 并将 --notes <notes.md> 传递给 scripts/js_reverse_ops.js
  • 可操作的剧本运行:运行 node scripts/run_playbook.js <target> --notes <notes.md> --out runs/current,以输出运行手册、路由计划、引导声明/来源/风险/回放工件以及 hook 框架
  • 下一步操作员命令:当运行目录存在但运行时、回放或就绪状态阻塞使下一步不明确时,运行 node scripts/recommend_next_action.js runs/current --json
  • 本地 JS 或 HTML 目标:运行 scripts/triage_js.sh <path>,然后运行与目标家族匹配的最小提取器
  • 浏览器后端目标:在收集运行时证据前验证浏览器和桥接器的健康状况
  • 反分析症状:运行 node scripts/select_anti_detection_profile.js --symptoms "<symptoms>",然后再更改 hook 或浏览器策略;配置文件选择仅改变观察策略,并且仍必须由运行时/回放验证跟进
  • 公开质量检查:在发布前或更改路由器、模式记忆体、示例或剧本后,运行 node scripts/run_public_benchmarks.js
  • 公开发布风险审计:在推送前,运行 node scripts/explain_public_release_risk.js --json --strict 以解释已跟踪文件、秘密、路径、捕获和生成工件的风险
  • 公开能力摘要:在将此技能与其他逆向工程包比较时,运行 node scripts/generate_capability_scorecard.js
  • 市场缺口摘要:在决定如何改进此技能以应对高级逆向工程技能和 MCP 工具链时,运行 node scripts/generate_market_gap_scorecard.js
  • 外部回归矩阵:将此技能与浏览器 MCP、静态反编译器、智能体 JS 逆向和跨域 RE 配置文件进行比较时,运行 node scripts/compare_external_skill_matrix.js --json
  • 浏览器 MCP 烟雾测试规划:在执行特定适配器的浏览器烟雾检查前,运行 node scripts/plan_browser_mcp_smoke.js --server-family chrome_devtools_mcp --json
  • 浏览器 MCP 烟雾测试验证:在声明适配器烟雾测试观察结果前,运行 node scripts/verify_browser_mcp_smoke_record.js --record <mcp-execution.json> --json
  • 浏览器 MCP 交付循环:运行 node scripts/run_mcp_delivery_loop.js <target> --record <mcp-execution.json> --out runs/current --json 一次性完成搭建、验证、提升、验证和就绪度评估
  • 回放失败诊断:在更改签名者代码前,运行 node scripts/diagnose_replay_failure.js --run-dir runs/current --json 或传递 --replay-record <record.json>
  • 回放客户端生成:运行 node scripts/generate_replay_delivery_client.js --record <accepted-replay.json> --out runs/current/replay-client --json 以生成经过清理的 Node 和 Python 回放客户端
  • 回放客户端验证:在将生成的客户端视为交接工件前,运行 node scripts/validate_replay_delivery_client.js runs/current/replay-client --json
  • 静态真值门控:在推广可读的静态输出前,运行 node scripts/assess_static_recovery_truth.js --original <input.js> --recovered <output.js> --json
  • 优先使用 Source Map 的静态规划:如果 bundle 包含 sourceMappingURL、sourceURL、内联映射或 X-SourceMap 注释,请在 AST 清理前运行 node scripts/plan_static_toolchain.js <bundle.js> --json
  • 领域交接验证:在将 WASM、数据包、移动端、原生或调试器发现结果合并回 JS 证据前,运行 node scripts/validate_domain_handoff_record.js --record <handoff-record.json> --json --strict
  • CLI 包装器:使用 node scripts/jsro.js <command> 或 jsro 包的 bin 命令执行 route、run、validate、next、benchmark、scorecard、marketgap、releaserisk、externalmatrix、mcpsmoke、mcpsmokeverify、mcploop、replaydiagnose、replayclient、replayclientcheck、statictruth、handoff、handoffcheck、install 和 publish 命令
  • 一键安装或发布:使用 bash scripts/install_local.sh 和 bash scripts/publish_release.sh
  • 已接受的响应加上令人困惑的浏览器可见值:在升级到签名者恢复之前,检查页面端渲染和抑制逻辑,并使用 playbooks/accepted-response-hidden-dom.md
  • 已接受的响应加上页面本地的嵌入式字体或字形实体:提取当前响应字体,在页面范围内解决字形映射问题,并使用 playbooks/embedded-runtime-font-mapping.md
  • 即使恢复了一个已接受的摘要,回放仍然失败:检查引导时 cookie 写入顺序、摘要收集器和包装的 cookie 组装,然后使用 playbooks/bootstrap-digest-ladder.md
  • 一个端点持续返回 JavaScript,并且仅在脚本执行并针对同一路径回放后才返回数组:将其视为迭代预热链,而不是寻找第二个隐藏端点,并使用 playbooks/iterative-script-warmup-same-endpoint.md
  • 签名者依赖于一个服务器签发的时间和 wasm 或模块辅助函数:冻结时间源,证明确切的签名者输入形状,并使用 playbooks/server-time-gated-wasm-signer.md
  • 摘要辅助函数名称看起来很标准,但浏览器输出与标准库和原始本地辅助函数都存在分歧:首先隔离最小的运行时补丁面,并使用 playbooks/patched-runtime-digest-branch.md
  • 一个大型 bundle 隐藏了一个你实际需要的用于回放的小型运行时辅助函数:首先提取该辅助函数,而不是模拟整个页面,并使用 playbooks/runtime-bundle-signer-extraction.md
  • 全局令牌辅助函数缺失或具有误导性,但 XMLHttpRequest.open 用签名者字段重写了受保护的 URL:将重写后的 URL 视为签名者输出,保留脚本顺序和运行时状态,并使用 playbooks/xhr-open-url-rewrite-runtime-replay.md
  • 可见的请求契约是稳定的,但不同的 HTTP 客户端出现分歧:在发明更多签名者状态之前,通过传输层阶梯进行升级,并使用 playbooks/transport-profile-ladder.md
  • 验证响应看起来嘈杂或悲观,但数据请求仍然成功:将数据端点视为验收预言机,并使用 playbooks/lenient-verify-data-gate.md
  • 页面暴露了一个简单的请求或一个辅助函数字段,但后续页面因令牌形状的门控而失败:在扩大范围到完整 VM 恢复之前,证明可见请求是否为诱饵,并使用 playbooks/decoy-page-request-hidden-token-gate.md
  • 一个挑战图像是固定的小网格,每个单元格有一个字形或符号:首先解决网格分配路径,并使用 playbooks/grid-challenge-template-matching.md
  • 多阶段挑战需要全新加载、一个种子签名者证明,然后将一个已接受的阶段值用作下一个密钥:在解决下游解密问题之前验证第一个基线请求,并使用 playbooks/fresh-reload-seeded-signer-step-key-ladder.md
  • 一个回放路径在第一轮工作,但后续轮次只有在上一轮回放后才恢复对等性:保留显式的同页轮次阶梯,并使用 playbooks/same-page-prior-round-signer-replay.md
  • 桌面端 HTML 不稳定,但移动端或应用的请求配置文件落在一个具有后续 JSON 水合的壳页面上:首先恢复壳请求包装器和路由映射,然后使用 playbooks/mobile-shell-api-pivot.md
  • 对于其原语受环境门控(浏览器与沙箱分支、修改后的 base64 字母表或哈希常量、沙箱令牌被拒绝而浏览器令牌通过)的捆绑加密库,路由到 playbooks/env-gated-crypto-differential.md。
  • 对于捕获的令牌 URL 成功回放的有状态 VM 签名者,在尝试 VM 语义恢复之前,路由到 playbooks/browser-assisted-token-replay.md。
  • 对于需要无浏览器本地预言机的自定义 VM 签名者,路由到 playbooks/jsdom-native-vm-differential.md,并针对一个经过检测的浏览器基准真值来对比指令和常量流。
  • 对于短 TTL 令牌,路由到 playbooks/short-ttl-inline-proxy.md:通过基于 Promise 的资源拦截器,从令牌计算测试框架内部发送真实请求。
  • 打包或类似 VM 的代码:保留原始工件,增量恢复结构,并标记已验证的语义
  • 回放交接:在编写 Node 或 Python 交付代码之前,导出一个稳定的工件 bundle

最佳工具基线

使用内置脚本进行路由、证据、工件和可重复性。将专业工具仅用于其擅长的狭窄工作:

  • 首先使用 source map 或原始模块,然后再进行任何反混淆处理
  • 使用 webcrack 处理常见的 obfuscator.io、类似 webpack 的 bundle、字符串数组和首轮解包
  • 使用 wakaru 处理现代压缩输出,当语法规范化和可读性比运行时真相更重要时
  • 使用 ast-grep、Babel 或 recast 进行小的、有针对性的结构转换
  • 仅在清理代码后使用 humanify 或其他 LLM 重命名器,并且仅在标识符恢复值得将代码片段发送到工作区外部时使用

不要让外部的反混淆器取代证据。每个恢复的字段、cookie、签名者输入或回放辅助函数仍然需要经过验证的浏览器观察或本地回放工件。

如需与相邻的逆向工程技能和工具进行更广泛的比较,请使用 references/external-skill-comparison-2026-06-04.md。

发布安全门控

在发布此公开技能之前,请从公共仓库根目录运行 bash scripts/check_public_release.sh。公共包不得包含:

  • 私有站点注释、实时捕获、凭据、cookies、令牌或客户特定路径
  • 由 git 跟踪的生成的 tmp/、缓存、__pycache__、.pyc 或本地基准测试输出
  • 绝对本地用户路径、不记名令牌、GitHub 令牌、云密钥、JWT 或私钥
  • 识别出超出通用示例的实时目标且未经清理的代码片段

将私有语料库和本地验证 bundle 保存在私有工作区中。仅发布通用剧本、脚本、模板和经过清理的示例。

主要参考资料

  • references/env-rebuild-recipes.md
  • references/misdiagnosis-patterns.md
  • references/toolchain-bootstrap.md
  • references/standard-workflow-cookbook.md
  • references/stage-gates.md — 严格的进入/退出条件、时间盒、回退链
  • references/decision-handoff.md — 阶段/会话之间仅增量的交接协议
  • references/task-types.md
  • examples/case-walkthrough-combinatorial-gates.md — 经过清理的叙述:组合环境门控 + 校准预言机
  • examples/case-walkthrough-timer-selfcheck-and-fake-200s.md — 经过清理的叙述:计时器自检、时间派生密钥、200-假数据迷宫

注意:完整版中引用的逐字测试框架生成器仅随私有工作区分发;此公共包在 references/env-rebuild-recipes.md 中记录了等效规则。

  • references/stages/locate.md
  • references/stages/runtime.md
  • references/stages/recover.md
  • references/stages/replay.md
  • references/rules/evidence-rules.md
  • references/rules/runtime-first.md
  • references/rules/routing-rules.md
  • references/rules/replay-rules.md

发布说明

此公共变体旨在作为可重用的技能包共享。请将私有测试夹具、实时捕获以及客户或站点特定的注释保存在单独的私有工作区或仓库中。

相关技能