通用网页端 JS 逆向工程技能:统一通过 ruyipage + RuyiTrace 采集运行时日志,基于日志证据逆向还原加密参数。融合黑盒补环境(JS 层 NativeProtect)与纯算还原双路径,支持 Node.js / Python 双语言纯协议交付。已在抖音 / 小红书 / 快手 / 同花顺 / 猿人学 / 易盾等真实案例场景中得到实践。(如果最新版效果差可以使用release2.
Обзор
网页端 JavaScript 请求参数逆向与纯协议还原。分析网页签名、Cookie/Token、设备指纹、混淆、WASM、JSVMP、验证码 verify 或 Session/TLS 请求链时触发,覆盖桌面网页、移动 H5 与内置浏览器,交付 Node.js/Python 实现。不用于 App、桌面程序及 Native 逆向;小程序限纯 JS 参数还原(Native/加壳部分除外);JSVMP 默认黑盒执行或最小环境复现。 本 Skill 采用以下项目的流程、工具和案例,并按本仓库的证据门禁与交付规则组织。本仓库自身以 MIT 许可发布,但聚合自上游的流程、工具与代码仍受各上游项目自身许可证约束: ⚠️ 合规提示:hello_js_reverse_skill 与 RuyiTrace 两个上游项目未提供 LICENSE 文件,按默认版权法其作者保留所有权利;本仓库引用的上游流程/代码用于个人研究与技术交流,。 : - 网页签名、Token、Cookie、指纹或设备参数生成逻辑 - JSVMP 黑盒执行或最小环境复现、WASM 加载、混淆还原、TLS 指纹模拟 - 验证码封装层的 verify 接口参数、轨迹加密和 challenge 绑定 :App 内 JS、Windows 桌面程序、EXE、DLL、Native、Frida 或 IDA 逆向;小程序仅限纯 JS 参数还原(Native/加壳部分除外)。 本 Skill 是纯目录 + SKILL.md,不绑定特定客户端。任选一种方式接入: - (Claude Code / ZCode / TRAE 等):把整个仓库克隆到对应 skills 目录即可被自动发现,常见位置:用户级 ~/.agents/skills/js-reverse-skill/、~/.claude/skills/js-reverse-skill/,或项目级 /.claude/skills/、 /.codex/skills/。 - (Cursor / Copilot 等):把 SKILL.md 内容作为项目规范注入(如 .cursorrules、copilot-instructions.
README
js-reverse-skill
网页端 JavaScript 请求参数逆向与纯协议还原。分析网页签名、Cookie/Token、设备指纹、混淆、WASM、JSVMP、验证码 verify 或 Session/TLS 请求链时触发,覆盖桌面网页、移动 H5 与内置浏览器,交付 Node.js/Python 实现。不用于 App、桌面程序及 Native 逆向;小程序限纯 JS 参数还原(Native/加壳部分除外);JSVMP 默认黑盒执行或最小环境复现。
来源
本 Skill 采用以下项目的流程、工具和案例,并按本仓库的证据门禁与交付规则组织。本仓库自身以 MIT 许可发布,但聚合自上游的流程、工具与代码仍受各上游项目自身许可证约束:
| 来源 | 贡献 | 许可证 |
|---|---|---|
| hello_js_reverse_skill | 流程骨架 + 案例库 | 未声明(作者保留所有权利) |
| xbsReverseSkill | 补环境流程 + 工具链 + web-verify-patcher 验证码识别/求解模块(ddddocr/坐标/轨迹脚本 + 题型分类器) | MIT |
| ruyipage | Firefox WebDriver BiDi 取证 | BSD-3-Clause(上游 README 附加"仅限合法合规非盈利个人研究、商用需授权"限制) |
| RuyiTrace | NDJSON trace 内核 | 未声明(上游 README 声明其 Firefox 内核为 MPL-2.0) |
| js-reverse-mcp | 浏览器 MCP 兜底取证通道(可选依赖;BLOCKED_FORENSIC 引擎检测降级时连接非 Firefox 内核浏览器采成功样本/指纹基线,工具含断点、网络追踪、脚本源码分析) | Apache-2.0 |
⚠️ 合规提示:hello_js_reverse_skill 与 RuyiTrace 两个上游项目未提供 LICENSE 文件,按默认版权法其作者保留所有权利;本仓库引用的上游流程/代码用于个人研究与技术交流,商业分发或二次发布前需逐一与上游作者确认授权。
能力边界
触发:
- 网页签名、Token、Cookie、指纹或设备参数生成逻辑
- JSVMP 黑盒执行或最小环境复现、WASM 加载、混淆还原、TLS 指纹模拟
- 验证码封装层的 verify 接口参数、轨迹加密和 challenge 绑定
不触发:App 内 JS、Windows 桌面程序、EXE、DLL、Native、Frida 或 IDA 逆向;小程序仅限纯 JS 参数还原(Native/加壳部分除外)。
JSVMP 边界:默认黑盒执行或最小环境复现,不反编译字节码源码。
目录结构
js-reverse-skill/
├── SKILL.md 流程骨架 + 规则 + 索引(AI 加载的主文档;版本变更见 CHANGELOG.md)
├── README.md 本文件
├── CHANGELOG.md 版本变更记录(每次 bump 同步更新;仅保留最近版本)
├── CHANGELOG.archive.md 历史版本归档(2.3.87 及更早)
├── assets/ 进入交付产物的可复用资源(补环境片段 + fixture 模板)
│ └── templates/ 7 类交付入口模板(Node/Python、请求客户端、vm 沙箱、WASM、验证码)
├── references/ 知识参考(13 个专题目录,按需读取;含验证码封装层与答案层资产、字体映射反爬)
├── cases/ 54 个实证案例 + `index.json` 机器索引
├── tests/ 路由/门禁回归基准(硬规则的可执行断言)+ 触发精度评估语料;CI 双平台运行
└── scripts/ 工具脚本(ruyipage+RuyiTrace 采集/导入/检查 + 密文特征识别/Cookie 归因 + 验证码题型分类/坐标/轨迹/答案校验 + 供应链 pin + AST 反混淆工具链 ast-patterns/)
安装到 AI 编程助手
本 Skill 是纯目录 + SKILL.md,不绑定特定客户端。任选一种方式接入:
- Agent Skills 机制(Claude Code / ZCode / TRAE 等):把整个仓库克隆到对应 skills 目录即可被自动发现,常见位置:用户级
~/.agents/skills/js-reverse-skill/、~/.claude/skills/js-reverse-skill/,或项目级/.claude/skills/、/.codex/skills/。 - 自定义指令 / 系统提示注入(Cursor / Copilot 等):把
SKILL.md内容作为项目规范注入(如.cursorrules、copilot-instructions.md 引用),并保证scripts/(含scripts/ast-patterns/)、references/、assets/、cases/随仓库可访问——脚本按 skill 根相对路径调用。
运行要求:Node.js ≥ 18(门禁/检查脚本离线可用);Python ≥ 3.9 仅取证(forensic_ruyipage.py)与验证码辅助脚本需要;ruyipage/RuyiTrace 由 install_all.js 按需安装到用户工程 tools/,首次安装后建议用 check_tool_pins.js --record 固化哈希锁定;浏览器 MCP 为可选兜底依赖(仅引擎检测降级场景使用,见「执行门禁」),不在 install_all.js 管理范围,由用户在宿主侧自行安装。
如何使用
把下面提示词喂给 AI 编程助手(如 TRAE / Cursor / Copilot),让它加载本 Skill 后按流程执行。技术细节由 skill 自动判断,提示词只给任务目标。
核心模板(纯逆向)
方括号 `` 内为占位说明,实际使用时替换为真实值:
请逆向还原JS加密生成逻辑:
- 目标网站:
- 目标接口:
- 目标参数:
扩展模板(含业务要求)
在核心模板基础上追加输出与备注:
请逆向还原JS加密生成逻辑:
- 目标网站:
- 目标接口:
- 目标参数:
# 输出(可选)
- 抽取为 HTTP API:
- 报告归档到:
# 备注(可选)
- 项目规范引用(如"项目结构见仓库 README")
- 取证模式指定(如"手动取证,提供 cURL")
- 一次性偏好(如"本次用原生 https,不模拟 TLS 指纹")
执行门禁
环境检查通过后写入或更新快照,再执行证据门禁:
node scripts/check_session_resume.js --case-dir --project-dir --write-snapshot --markdown
node scripts/check_evidence.js --case-dir --url --inputs --markdown
环境检测类脚本统一 --project-dir 定位 tools/ 所在工程根;多 case 项目共享 tools 时,--project-dir/--case-dir 传 case 目录或共享工程根均可(自动向上查找含 tools/ 的祖先目录)。目标接口 URL/关键词已知时,check_evidence.js 加 --require-target-signal 同时约束 Step 1 与 Step 2。
Step 1 只接受有效 capture.json 网络记录(纯元数据;终态与关联记录索引在 target-hits.json/related-hits.json,超过 JSON 预览阈值的完整 body/WASM 分别在 case/forensic/bodies/、case/forensic/wasm/),或通过内容校验的 HAR、cURL、原始 HTTP 请求文本;单独 JS、截图和指纹基线只作辅助材料,不计为 Step 1。Step 2 只接受内容可解析、记录非空且关联目标域的 RuyiTrace NDJSON/JSONL(新版按进程类型分目录,脚本自动递归扫描);摘要不能替代日志。脚本输出 none、step1-only、step2-only 或 both,据此补采缺失步骤。
取证浏览器被目标站引擎级检测拒绝(--ua 覆盖无效)时进入 BLOCKED_FORENSIC:经用户确认后可选用浏览器 MCP(如 js-reverse-mcp)连接非 Firefox 内核浏览器兜底取证,成功样本/Cookie/指纹/JS 落盘 case/ 并按用户材料过 check_evidence.js 校验。MCP 是可选依赖且仅限两个位置(动作守卫 --guard mcp 硬卡):BLOCKED_FORENSIC 兜底取证、引擎检测 case 的 DIAGNOSE 双对照浏览器侧;无 MCP 时走用户提供 cURL/HAR 或降级路径,skill 完整可用。
案例查询
按域名、参数名或技术特征查询机器索引,命中后再读取对应案例:
node scripts/search_cases.js --domain jd.com --signal h5st
skill 默认交付内容
每次任务默认产出以下交付物(与 SKILL.md 交付规范一致,不通过不交付):
result/
├── final.js # 唯一执行入口(默认发真实 API 请求验证)
├── config.json # 外置配置(脱敏静态配置)
├── package.json # 依赖契约(curl-cffi-node 等)
├── 最终项目总结.md # 目标、分析过程、实现方案与交付说明
├── 经验沉淀-.md # 可复用经验,供后续合并到 cases/
├── 验证记录.json # 脱敏的真实请求结果(JSON:mode + attempts)
└── src/ # 源码模块(按需拆分)
├── signer.js # 签名生成
├── env/ # 补环境(路径 D 时,含内联 native-protect.js)
└── request/ # 请求客户端
- 纯协议、无浏览器自动化代码(可在无显示器 / Docker 环境独立运行)
- ≥5 次真实 API 请求验证通过(200 响应 + 正确业务数据)
最终项目总结.md、经验沉淀-.md、验证记录.json任一缺失 = 任务未完成
Python 交付同理:
final.py入口 +src/模块。完整交付规范见 SKILL.md。
License
MIT
Рекомендуемые инструменты
Попробуйте другой запрос или уберите фильтр.
Установка
npx skillfish add erma0/js-reverse-skill