web-reverse
- Repo stars 35
- Author updated Live
- Author repo web-reverse-skill-notes-20260319
- Domain
- Other
- Compatible agents
-
- Claude Code
- Cursor
- Cline
- Codex
- Windsurf
- Gemini CLI
- +20
- Trust score
- 88 / 100 · community maintained
- Author / version / license
- @zhongjiaxiong · no license declared
- Token usage
- Lean
- Setup complexity
- Plug-and-play
- External API key
- Not required
- Operating systems
- macOS · Linux · Windows
- Runtime requirements
- Node.js
- Permissions
-
- Read-only
- Write / modify
- Network behavior
- External requests
- Install commands
- 26 variants
Profile is derived at build time from SKILL.md and install vectors. Subject to drift from author intent.
Heads up: 未限定 allowed-tools,默认拥有全部工具权限。
---
name: web-reverse
description: 必须收集四字段:target、objective、requirements、boundaries。 | target | URL 或文件路径;类型:WEB | | objective | 密钥…
category: other
runtime: Node.js
---
# web-reverse output preview
## PART A: Task fit
- Use case: 必须收集四字段:target、objective、requirements、boundaries。 | target | URL 或文件路径;类型:WEB | | objective | 密钥恢复 / 认证绕过 / 协议重建 / API签名逆向 / CTF flag / WASM反虚化 / JS-VM反虚化 | | requirements | 深度:quick / standard / deep;输出格式;时间预算 | | boundaries | 主动触发 Y/N;速率限制;禁止操作 | makes outbound network calls; runs on Node.js. Works with Claude Code, Cursor, Cline and 23 more..
- Inputs: target material, constraints, expected output, and acceptance criteria.
- Evidence boundary: follow “§ 目标与触发 / § 任务输入(缺失即补充) / 通用字段” and do not present inference as author intent.
## PART B: Execution result
- **01** The card summarizes the use case; runtime output centers on “必须收集四字段:target、objective、requirements、boundaries。 | target | URL 或文件路径;类型:WEB | | objective | 密钥恢复 / 认证绕过 / 协议重建 / API签名逆向 / CTF flag / WASM反虚化 / JS-VM反虚化 | | requirements | 深度:quick / standard / deep;输出格式;时间预算 | | boundaries | 主动触发 Y/N;速率限制;禁止操作 | makes outbound network calls; runs on Node.js. Works with Claude Code, Cursor, Cline and 23 more.”.
- **02** When the source has headings, the agent prioritizes “§ 目标与触发 / § 任务输入(缺失即补充) / 通用字段” so the result follows the author’s structure.
- **03** Typical output includes task judgment, concrete steps, required commands or file edits, validation, and follow-up options.
- **04** Risk context follows the fingerprint: read files, write/modify files; may access external network resources; usually needs no extra API key.
## Running Rules
- read files, write/modify files; may access external network resources; usually needs no extra API key.
- Validate with a small sample before expanding scope.
- Return the result, validation criteria, and next iteration options. The source does not require a stable slash command. After installation, invoke the skill by name and describe the task.
Name target files or source material, expected output, forbidden changes, and whether network or shell access is allowed. Permission fingerprint: read files, write/modify files.
Start with a small task and check whether the result follows “§ 目标与触发 / § 任务输入(缺失即补充) / 通用字段”. Inspect diffs, logs, previews, or tests before expanding scope.
Confirm the final output includes a concrete result, evidence, and next action. If it stays generic, tighten inputs, boundaries, and acceptance criteria.
---
name: web-reverse
description: 必须收集四字段:target、objective、requirements、boundaries。 | target | URL 或文件路径;类型:WEB | | objective | 密钥…
category: other
source: zhongjiaxiong/web-reverse-skill-notes-20260319
---
# web-reverse
## When to use
- 必须收集四字段:target、objective、requirements、boundaries。 | target | URL 或文件路径;类型:WEB | | objective | 密钥恢复 / 认证绕过 / 协议重建 / API…
- Use it when the task has clear inputs, repeatable steps, and validation criteria.
## What to provide
- Target material, scope, expected result, and forbidden changes.
- Whether network, commands, file writes, or external services are allowed.
## Execution rules
- Organize steps around “§ 目标与触发 / § 任务输入(缺失即补充) / 通用字段” and keep inference separate from source facts.
- read files, write/modify files; may access external network resources; usually needs no extra API key.
- Validate with a small sample before expanding the task.
## Output requirements
- Return the deliverable, key evidence, validation method, and next action.
- Mark missing information as unknown; do not invent commands, platforms, or dependencies. The author source anchors workflow facts; repository files anchor sources and commands; Fluxly only adds fit, limitations, and quality judgment.
skill "web-reverse" {
input -> user goal + target files + boundaries + acceptance criteria
context -> § 目标与触发 / § 任务输入(缺失即补充) / 通用字段
rules -> SKILL.md triggers / order / output contract
runtime -> Node.js | read files, write/modify files | may access external network resources
guardrails -> usually needs no extra API key + small-sample validation + diff/log review
output -> copyable result + checklist + next iteration
} Web Reverse Engineering Skill (WEB)
核心原则:先定级再工具链;先事实后推断;先脱壳再分析;中文报告必须交付。
§ 目标与触发
- 本技能用于 Web前端逆向与签名/加密复现。
- 触发场景见前置 description;不满足则不要触发。
§ 任务输入(缺失即补充)
必须收集四字段:target、objective、requirements、boundaries。
通用字段
| 字段 | 说明 |
|---|---|
target |
URL 或文件路径;类型:WEB |
objective |
密钥恢复 / 认证绕过 / 协议重建 / API签名逆向 / CTF flag / WASM反虚化 / JS-VM反虚化 |
requirements |
深度:quick / standard / deep;输出格式;时间预算 |
boundaries |
主动触发 Y/N;速率限制;禁止操作 |
WEB 专属字段
| 字段 | 说明 |
|---|---|
url scope |
基础URL、页面列表、登录态、所需角色 |
interface scope |
目标API端点、HTTP方法/路径、API版本 |
runtime constraints |
主动触发 Y/N;速率限制;禁止操作 |
evidence requirements |
Headers Y/N;载荷样本 Y/N;时序瀑布 Y/N;token/cookie溯源 Y/N |
js protection type |
仅压缩 / 变量重命名 / 字符串加密 / CFG扁平化 / ob-fuscator.io / JSFuck / eval-pack / JS-VMP / 自定义VM / 未知 |
bundle system |
Webpack / Vite / Rollup / Parcel / Browserify / ESBuild / 未知 |
wasm present |
Y/N;如Y:独立.wasm / emscripten / wasm-pack / AssemblyScript |
source map available |
Y/N;内嵌 / 外部.map / Header中隐藏 |
anti-debug in browser |
DevTools检测 Y/N;时序检测 Y/N;debugger语句 Y/N |
CTF 专属字段
| 字段 | 说明 |
|---|---|
CTF type |
web / crypto / rev |
flag format |
FLAG{...} / CTF{...} / 自定义正则 |
known hints |
题目描述/提示 |
solver output |
flag字符串 / 可用exploit / 签名重放脚本 |
§ 安全与授权边界
- 仅在授权范围内逆向分析;不越权、不扩域。
- 禁止执行payload样本、触发在线漏洞利用、在沙箱外导出凭证。
- 外部平台/环境权限边界必须请求确认。
§ 输出要求(强制)
- 必须产出:
web_replay.js、Reverse_Report_CN.md。 - 视情况追加:
deobf_clean.js、vm_opcodes.txt、wasm_analysis.wat、solver.py、crypto_params.json、token_flow.md。
§ 证据与结论规则
- 高置信结论需 ≥2 种独立证据交叉验证。
- 单一工具结论标注
LOW CONFIDENCE。 - 每项结论附证据锚点:bundle chunk/行号、网络请求URL、JS函数名、xref。
- 输出必须分区:
FACTS、INFERENCES、UNKNOWNS。
§ 防护等级(T0–T7)与处理策略
| 等级 | 模式 | 主要方法 |
|---|---|---|
| T0 | 仅压缩 | 美化 + 静态阅读 |
| T1 | 变量重命名 / 死代码注入 | AST重命名 + 静态阅读 |
| T2 | ob-fuscator.io / 字符串加密 / CFG扁平化 | 反混淆器 + 运行时hook |
| T3 | eval-packing / JSFuck / JJencode / aaencode | 解包 → T1/T2处理 |
| T4 | JS-VMP / 自定义VM | VM调度器映射 + opcode追踪 |
| T5 | WASM核心 | wasm-dis + IDA/Ghidra + 运行时hook |
| T6 | T4+T5混合 | 顺序:JS-VM反虚化 → WASM逆向 |
| T7 | 多重嵌套(T2+T4+T5) | 分层剥离:外层混淆→VM→WASM |
强制: 工具链选择前先完成T0–T7定级;未脱壳/未反混淆/未反虚化不得下结论。
§ 自动分流(JS Protection Triage)
- DevTools → Sources:列出所有 .js/.mjs bundle
- 单bundle >500KB → 疑似 Webpack/Rollup
- 抽查可读性:可读变量名=仅压缩;_0x...=混淆/重命名
- 搜索模式:debugger循环/JSFuck/eval pack/CFG扁平化
- 检查 .wasm fetch / WebAssembly.instantiate
- 检查大switch + opcode数组 → JS-VMP/自定义VM
- 查找 sourceMappingURL
- 识别框架指纹:React/Vue/Angular
- 检查 Service Worker 注册
- 检查 WebSocket 二进制帧
§ 工具编排
首选: chrome-devtools-mcp
- 网络捕获、JS source mapping、API重放、storage/token/WebSocket追踪、DevTools hook注入
优先链
- WEB基础:
chrome-devtools-mcp → 静态JS美化 → API重放 - WEB混淆:
chrome-devtools-mcp → 反混淆 → 运行时hook → 静态验证 - Webpack/Vite:
chrome-devtools-mcp → bundle拆分 → chunk映射 → 入口点追踪 - JS-VMP/VM:
chrome-devtools-mcp → VM调度器定位 → opcode映射 → AST变换 → 运行时追踪 - WASM:
chrome-devtools-mcp → wasm-dis/wasm2c → IDA/Ghidra → 运行时hook - 疑似题面/服务端漂移:
线上资源指纹 → 历史题解入口对照 → 真实点击流验证 → 协议流验证
Fallback
- DevTools不可用:声明阻塞 → 请求代理日志/HAR。
§ 标准流程(6步)
Step 1 — 上下文拆解: 评分路线(可行性/信号/风险 0-3)→ 选择主路径 + fallback。 Step 2 — 环境检查: DevTools可用、作用域/登录态/速率限制确认。 Step 3 — 全局三角: 定级T0–T7、识别bundle、枚举API、检查source map/WASM/SW/框架指纹。 Step 4 — 关键路径: 页面加载JS → 初始化 → 认证/加密模块 → sign() 调用点。 Step 5 — 深度分析: 反混淆/反虚化后数据流与参数生成逻辑。 Step 6 — 动态验证: hooks捕获 + 重放脚本验证签名一致性。
§ 专项流程:Drift Check
当用户提供历史题解、历史脚本路径,或你发现“当前线上行为与公开解法明显不一致”时,必须先跑一次漂移验证,再决定是否继续深挖客户端。
Drift Check 最小动作集
- 抓当前题页 HTML 指纹
- 枚举当前加载的 script/link/API 资源
- 直接请求历史题解常见入口与旧资源路径
- 对照当前资源路径与历史文章/脚本路径是否一致
- 跑真实点击流与协议流,确认当前线上实际失败点
Drift Check 产物
- 当前题页 URL 与 HTML 哈希
- 当前 script/API 资源列表
- 旧入口可用性矩阵:
200 / 404 / 500 / redirect - 结论分级:
NO DRIFT SIGNALPOSSIBLE DRIFTHIGH PROBABILITY DRIFT
Drift Check 判定规则
- 若旧入口 404/500,且真实点击流与历史公开解法期望不一致,至少标
POSSIBLE DRIFT - 若客户端显式状态已压缩到最小仍无法解释失败,同时旧入口失效,标
HIGH PROBABILITY DRIFT
§ 参考资料(按需加载)
references/hooks.md:网络/存储/反调试/WebCrypto/CryptoJS hook 代码references/deobf.md:T1–T3 反混淆与解包流程references/vm_wasm.md:JS-VM / WASM 反虚化步骤references/replay.md:协议重建与web_replay.js模板references/ctf.md:CTF 快速三角与交付物要求
§ 交付物模板
Reverse_Report_CN.md 结构
- 任务摘要
- 核心发现(≤5项)
- 证据表
- 调用链
- 风险与影响
- FACTS / INFERENCES / UNKNOWNS
- 下一步行动
- 交付物清单
- 复现步骤
web_replay.js 要求
- 可直接
node web_replay.js - 包含签名算法还原与请求重放
- 注明关键参数来源(key/token/nonce/ts)
§ 可复用实验模板
1. Signer Export + Minimal Trace
适用:已经定位到 runtime signer,但不确定它到底读了哪些输入。
动作:
- 对
eval/ 动态 bundle 做最小 patch - 导出 signer 入口与少量 helper
- 只记录:
- signer 输入
- signer 输出
- 请求发出前的 cookie / URL / 少量动态全局
- 禁止一上来做全量 opcode 日志,优先做轻量 trace
产物:
trace_*.pytrace_*.out.json
2. Dynamic Global Injection Experiment
适用:服务端响应会下发 k / nonce / 动态全局名,怀疑这些值影响下一次请求。
动作:
- 收集真实点击流里每页响应下发的动态值
- 分别注入候选值
- 重新生成 fresh URL
- 记录请求结果矩阵
产物:
experiment_*_variants.pyexperiment_*_variants.out.json
3. Scope Snapshot Diff
适用:window / storage / cookie 都看过了,怀疑还存在模块态或闭包态。
动作:
- 在运行时注入一个最小快照接口
- 快照范围:
- 可访问的模块级 primitive / string / array 摘要
- 关键闭包返回值摘要
- 只在关键请求前抓快照
- 自动比较相邻页面或相邻请求的差分
产物:
trace_scope_snap.pytrace_scope_snap.out.json
4. Browser / Protocol Consistency Matrix
适用:怀疑“浏览器里成功、协议层失败”或“自动化栈和真实点击流不一致”。
动作:
- 至少比较三条链路:
- 真实点击流
- browser-native
fetch - 协议层 replay
- 若三者一致,则优先排除“网络栈差异”分支
结论要求:
- 必须明确写出哪几条链路一致,哪几条不一致
- 不得只凭单条链路下结论
§ 结果声明规则
- 未确认项写入 UNKNOWNS;给出下一步操作。
- 时间预算内空结果:声明空结果 + 已检查内容 + 次优路线。
§ 质量门槛(完成条件)
- 防护定级完成;关键层已脱壳/反混淆/反虚化。
- 重放脚本与浏览器签名一致。
- 证据锚点齐全,可复现。
- 若存在历史题解或旧入口,已明确完成一次
Drift Check并给出分级结论。
Decide Fit First
Design Intent
How To Use It
Boundaries And Review