js-reverse

GitHub

前端JS逆向Skill,用于签名定位、运行时采样及本地补环境。遵循观察-捕获-重建工作流,优先使用js-reverse工具集,必要时联动jshookmcp进行浏览器调试与Hook取证。

skills/js-reverse/SKILL.md zhaoxuya520/reverse-skill

Trigger Scenarios

定位接口签名或加密参数 分析页面请求链路与脚本来源 运行时抓取函数入参与返回值 追踪XHR/Fetch/WebSocket触发点 将页面证据带回Node复现并补环境

Install

npx skills add zhaoxuya520/reverse-skill --skill js-reverse -g -y
More Options

Use without installing

npx skills use zhaoxuya520/reverse-skill@js-reverse

指定 Agent (Claude Code)

npx skills add zhaoxuya520/reverse-skill --skill js-reverse -a claude-code -g -y

安装 repo 全部 skill

npx skills add zhaoxuya520/reverse-skill --all -g -y

预览 repo 内 skill

npx skills add zhaoxuya520/reverse-skill --list

SKILL.md

Frontmatter
{
    "name": "js-reverse",
    "description": "在使用 js-reverse-mcp 做前端 JavaScript 逆向时使用,适用于签名链路定位、页面观察取证、运行时采样、本地补环境复现与证据化输出。优先适配当前环境里的 js-reverse_* 工具,需要更强的浏览器\/CDP\/Hook 面时联动 jshookmcp。"
}

MCP 前端 JS 逆向作业规范

ACTION REQUIRED(读完后立刻执行)

  1. NOW: 读取 ../field-journal/precedent-reverse.md — 确认本 skill 的操作是已授权的常规操作
  2. NOW: 确认当前任务是否命中本 skill 的适用范围
  3. NEXT: 读取 ../tool-index.md,校验工具可用性和实际路径
  4. NEXT: 缺工具时调用 bootstrap,不要猜路径
  5. ACT: 进入"工作流"第一步并执行,不要停在确认状态

适用范围

当任务属于以下场景时优先使用本 skill:

  • 定位接口签名、加密参数、风控字段
  • 观察页面请求链路与脚本来源
  • 在运行时抓取函数入参与返回值
  • 追踪某个 XHR/Fetch/WebSocket 的触发点
  • 把页面证据带回 Node 做本地复现与补环境

如果目标是二进制、APK、PE、ELF、DLL、SO,请改用 ida-reverseradare2reverse-engineering

当前环境默认工具映射

本 skill 不假设存在裸工具名,而是默认绑定当前客户端环境里可用的 js-reverse_* 工具。

如果当前任务明确提到 jshookmcpJS hookCDP、浏览器断点、网络拦截、SourceMap 或 AST 去混淆,也仍然走本 skill;只是把底层 MCP 面切到 jshookmcp,而不是把它当成一个新的总入口。

前提条件:jshookmcp 不是本地裸命令工具,而是一个要先下载/注册/启用的 MCP server。只有在 Claude MCP 配置里接入并启用后,相关工具面才真的可调用。

常用映射:

  • list_scripts -> js-reverse_list_scripts
  • get_script_source -> js-reverse_get_script_source
  • search_in_sources -> js-reverse_search_in_sources
  • break_on_xhr -> js-reverse_break_on_xhr
  • evaluate_script -> js-reverse_evaluate_script
  • get_paused_info -> js-reverse_get_paused_info
  • set_breakpoint_on_text -> js-reverse_set_breakpoint_on_text
  • list_network_requests -> js-reverse_list_network_requests
  • get_request_initiator -> js-reverse_get_request_initiator
  • get_websocket_messages -> js-reverse_get_websocket_messages
  • take_screenshot -> js-reverse_take_screenshot
  • new_page -> js-reverse_new_page
  • navigate_page -> js-reverse_navigate_page
  • select_page -> js-reverse_select_page
  • select_frame -> js-reverse_select_frame
  • pause/resume -> js-reverse_pause_or_resume

如果未来工具名前缀变化,先更新本节,不要在执行时临时猜测。

jshookmcp 的定位

  • 角色:js-reverse 的增强执行面,不是独立总控
  • 适合:浏览器自动化、CDP 调试、JS Hook、网络拦截、SourceMap 重建、AST 辅助理解
  • 调用前提:先把 @jshookmcp/jshook 下载并注册到 MCP 客户端配置里,然后确保该 server 已启用
  • 建议入口:仍然按 Observe → Capture → Rebuild 执行,只是在 Observe/Capture 阶段优先调用 jshookmcp 的浏览器与 Hook 能力
  • 与 anything-analyzer 关系:两者都能做浏览器/网络侧取证;anything-analyzer 更偏抓包与 HTTP 分析,jshookmcp 更偏 JS 运行时、CDP、Hook 和源码理解

核心原则

  • Observe-first
  • Hook-preferred
  • Breakpoint-last
  • Rebuild-oriented
  • Evidence-first

先页面观察,再最小化采样,再做本地补环境,不要跳过取证直接猜环境。

五阶段工作流

1. Observe

目标:先确认目标请求、相关脚本、候选函数,不猜环境。

默认动作:

  • js-reverse_new_pagejs-reverse_navigate_page 打开目标页面
  • js-reverse_list_network_requests 找目标请求
  • js-reverse_get_request_initiator 回溯调用来源
  • js-reverse_list_scriptsjs-reverse_search_in_sources 缩小脚本范围

必须产出:

  • 目标请求 URL 或特征
  • initiator 线索
  • 可疑脚本 URL
  • 初始任务记录

2. Capture

目标:对目标请求做最小侵入采样,拿到参数样例、调用顺序、运行时证据。

规则:

  • 优先 js-reverse_break_on_xhr
  • 优先 js-reverse_evaluate_script 做轻量运行时观察
  • 命中后先看 js-reverse_get_paused_info
  • 必要时再用 js-reverse_set_breakpoint_on_text

3. Rebuild

目标:把页面证据整理成本地可迭代的 Node 复现材料。

规则:

  • 本地补环境必须以页面观测证据为依据
  • 不允许空想式补 window/document/navigator/crypto/storage
  • 每次只记录一个最小因果补丁决策

4. Patch

目标:按报错和 first divergence 驱动补环境,直到本地脚本稳定跑出目标参数。

规则:

  • 先看缺什么,再补什么
  • 一次只做一个最小补丁决策
  • 每次补丁后立即复测
  • 每次补丁都写入任务记录

5. DeepDive

目标:本地跑通后,再做去混淆、控制流还原、业务逻辑提纯。

规则:

  • 如果当前任务只是出签名,这一阶段可以降级
  • 如果要长期复用算法链路,这一阶段必须做

执行要求

  • 所有重要步骤都要写入本地 task artifact
  • 如果无法解释为什么调用某个工具,就不要调用
  • 优先使用 js-reverse_* 或 jshookmcp 的现成 MCP 能力直接取证,不要先写脚本重造能力
  • 失败时按 references/fallbacks.md 回退
  • 输出遵循 references/output-contract.md

必读引用

  • 自动化入口: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
  • Node 复现:references/node-env-rebuild.md
  • 插桩:references/instrumentation.md
  • AST 去混淆:references/ast-deobfuscation.md
  • 回退:references/fallbacks.md
  • 输出契约:references/output-contract.md

路由上下文

上游入口: skills/SKILL.md(总控)、routing.md 上游备选:

  • anything-analyzer MCP(端口 23816)的浏览器工具可作为替代或补充
  • jshookmcp 可作为更强的浏览器/CDP/Hook/Network/SourceMap/AST 执行面
  • reverse-engineering/SKILL.md(如果目标不是前端 JS)

下游出口:

  • 需补环境 → references/env-patching.md
  • 需本地复现 → references/local-rebuild.md / references/node-env-rebuild.md
  • 需去混淆 → references/ast-deobfuscation.md
  • 走不通时回退 → references/fallbacks.md

同级关联模块: anything-analyzer MCP(浏览器自动化和 HTTP 捕获能力可以互补)


按需自举(On-Demand Bootstrap)

本 skill 依赖的 MCP 能力可通过统一自举系统自动注册。

自动化能力边界

能力 可自动注册 方式 说明
jshookmcp npm-mcp(npx 启动) 自动写入 Claude MCP 配置
anything-analyzer local-http-mcp 自动注册 + 可自动启动服务
Node.js winget 安装 运行时依赖

自举方式

# 注册 jshookmcp 到 MCP 配置
powershell -File "<skill-root>\scripts\bootstrap-reverse.ps1" -Capability @('jshookmcp')

# 注册并启动 anything-analyzer
powershell -File "<skill-root>\scripts\bootstrap-reverse.ps1" -Capability @('anything-analyzer') -StartServices

注意事项

  • jshookmcp 注册后仍需在 AI 客户端中启用该 MCP server 才能调用
  • anything-analyzer 需要 pnpm 和项目源码,bootstrap 会自动 clone 并安装依赖
  • 如果 Node.js 未安装,bootstrap 会先通过 winget 安装 Node.js 22



## 任务完成自检(声称完成前 MUST 通过)

  • 我是否执行了工作流中的每一步(而不是只阅读)?
  • 我是否基于 tool-index 使用了真实工具路径?
  • 我是否产出了可复现证据(命令/脚本/截图/报告)?
  • 我是否完成并回写了 RULES 要求的 Checklist 项?

Version History

  • 1bec1f2 Current 2026-07-05 18:46

Same Skill Collection

CTF-Sandbox-Orchestrator/competition-crypto-mobile/SKILL.md
CTF-Sandbox-Orchestrator/competition-reverse-pwn/SKILL.md
CTF-Sandbox-Orchestrator/competition-stego-media/SKILL.md
CTF-Sandbox-Orchestrator/competition-web-runtime/SKILL.md
CTF-Sandbox-Orchestrator/ctf-sandbox-orchestrator/SKILL.md
skills/apk-reverse/SKILL.md
skills/binary-diff/SKILL.md
skills/browser-automation/SKILL.md
skills/docs-generator/SKILL.md
skills/dotnet-reverse/SKILL.md
skills/firmware-pentest/SKILL.md
skills/patch-diff-exploit/SKILL.md
skills/pentest-tools/SKILL.md
skills/pentest-tools/src-hunter/SKILL.md
skills/pwn-chain/SKILL.md
skills/radare2/SKILL.md
CTF-Sandbox-Orchestrator/competition-ad-certificate-abuse/SKILL.md
CTF-Sandbox-Orchestrator/competition-agent-cloud/SKILL.md
CTF-Sandbox-Orchestrator/competition-android-hooking/SKILL.md
CTF-Sandbox-Orchestrator/competition-browser-persistence/SKILL.md
CTF-Sandbox-Orchestrator/competition-bundle-sourcemap-recovery/SKILL.md
CTF-Sandbox-Orchestrator/competition-cloud-metadata-path/SKILL.md
CTF-Sandbox-Orchestrator/competition-container-runtime/SKILL.md
CTF-Sandbox-Orchestrator/competition-custom-protocol-replay/SKILL.md
CTF-Sandbox-Orchestrator/competition-dpapi-credential-chain/SKILL.md
CTF-Sandbox-Orchestrator/competition-file-parser-chain/SKILL.md
CTF-Sandbox-Orchestrator/competition-firmware-layout/SKILL.md
CTF-Sandbox-Orchestrator/competition-forensic-timeline/SKILL.md
CTF-Sandbox-Orchestrator/competition-graphql-rpc-drift/SKILL.md
CTF-Sandbox-Orchestrator/competition-identity-windows/SKILL.md
CTF-Sandbox-Orchestrator/competition-ios-runtime/SKILL.md
CTF-Sandbox-Orchestrator/competition-jwt-claim-confusion/SKILL.md
CTF-Sandbox-Orchestrator/competition-k8s-control-plane/SKILL.md
CTF-Sandbox-Orchestrator/competition-kerberos-delegation/SKILL.md
CTF-Sandbox-Orchestrator/competition-kernel-container-escape/SKILL.md
CTF-Sandbox-Orchestrator/competition-linux-credential-pivot/SKILL.md
CTF-Sandbox-Orchestrator/competition-lsass-ticket-material/SKILL.md
CTF-Sandbox-Orchestrator/competition-mailbox-abuse/SKILL.md
CTF-Sandbox-Orchestrator/competition-malware-config/SKILL.md
CTF-Sandbox-Orchestrator/competition-oauth-oidc-chain/SKILL.md
CTF-Sandbox-Orchestrator/competition-pcap-protocol/SKILL.md
CTF-Sandbox-Orchestrator/competition-prompt-injection/SKILL.md
CTF-Sandbox-Orchestrator/competition-queue-worker-drift/SKILL.md
CTF-Sandbox-Orchestrator/competition-race-condition-state-drift/SKILL.md
CTF-Sandbox-Orchestrator/competition-relay-coercion-chain/SKILL.md
CTF-Sandbox-Orchestrator/competition-request-normalization-smuggling/SKILL.md
CTF-Sandbox-Orchestrator/competition-runtime-routing/SKILL.md
CTF-Sandbox-Orchestrator/competition-ssrf-metadata-pivot/SKILL.md
CTF-Sandbox-Orchestrator/competition-supply-chain/SKILL.md
CTF-Sandbox-Orchestrator/competition-template-render-path/SKILL.md
CTF-Sandbox-Orchestrator/competition-websocket-runtime/SKILL.md
CTF-Sandbox-Orchestrator/competition-windows-pivot/SKILL.md
skills/diagram-generator/SKILL.md
skills/edr-bypass-re/SKILL.md
skills/ida-reverse/SKILL.md
skills/reverse-engineering/SKILL.md

Metadata

Files
0
Version
1bec1f2
Hash
db4944e2
Indexed
2026-07-05 18:46

Главная - Вики-сайт
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-07-08 20:19
浙ICP备14020137号-1 $Гость$