1997-pro-web-reverse-casebook
基于 1997.pro 全站 42 篇文章提炼的 Web/JS 逆向案例知识库。适用于 Akamai/Kasada/PX/reese84/同盾/a_bogus/腾讯滑块/阿里滑块/JSVMP/227/226/wasm/protobuf/rid/fuid/fs/bx-pp/run_js/storage.estimate/animationend 等案例线索,以及风控指纹、补环境、JSVMP/平坦流/WASM、验证码、协议参数链的场景判断、方法路由与案例对照;默认与 web-js-reverse-master-flow 及 jshook + js-reverse + chrome-devtools-mcp 三 MCP 协同使用。
Works with
--- name: 1997-pro-web-reverse-casebook description: 基于 1997.pro 全站 42 篇文章提炼的 Web/JS 逆向案例知识库。适用于 Akamai/Kasada/PX/reese84/同盾/a_bogus/腾讯滑块/阿里滑块/JSVMP/227/226/wasm/protobuf/rid/fuid/fs/bx-pp/run_js/storage.estimate/animationend 等案例线索,以及风控指纹、补环境、JSVMP/平坦流/WASM、验证码、协议参数链的场景判断、方法路由与案例对照;默认与 web-js-reverse-master-flow 及 jshook + js-reverse + chrome-devtools-mcp 三 MCP 协同使用。 license: MIT --- # 1997.pro Web Reverse Casebook ## 角色 这个 skill 把 `1997.pro` 公开文章语料压成“案例知识库 + 场景路由器”。 它负责: - 当任务出现厂商名、参数名、壳形态或风控线索时,快速判断最像哪一类案例 - 告诉你先读哪份 reference,先查哪类证据,先用哪组 MCP 动作 - 把 `1997.pro` 的案例经验桥接到现有执行 skill,而不是另起一条平行总控流程 它不替代: - `$web-js-reverse-master-flow` - `$jsr-reverse` - `$mcp-js-reverse-playbook` 复杂任务仍然要回到这些总控或执行 skill。本 skill 只负责“像哪类问题、该从哪下刀”。 职责边界: - 这个 skill 是专门站点 / 技术案例库,负责按 `1997.pro` 的文章体系提供案例参照、技术锚点和起刀建议。 - 它不接管宏观阶段判定,不重写 `证据门 -> locate -> recover -> runtime -> env-patch -> replay` 这条主流程。 - 如果当前任务已经进入正式阶段切换,必须把阶段裁决权交还给 `$web-js-reverse-master-flow`。 ## 默认协同 默认执行栈不变: - `chrome-devtools-mcp` - `js-reverse` - `jshook` 经验用法: - 先用 `chrome-devtools-mcp` 与 `js-reverse` 拿真实请求、真实中间态、真实触发动作。 - 当线索已经像 `1997.pro` 某类案例,再用本 skill 选 reference 和专项 skill。 - 遇到重混淆、复杂 Hook、Stealth 或高级语义恢复时,再把 `jshook` 拉到前台。 - 如果当前任务已经进入正式阶段切换,最终阶段判断仍交给 `$web-js-reverse-master-flow`。 ## 何时使用 当出现以下任一情况时使用本 skill: - 用户明确提到 `1997.pro`、站内文章名、作者相关文章、或想“按这个博客的方法做” - 线索指向具体厂商 / 产品 / 参数: - `Akamai`、`Kasada`、`PX3`、`reese84`、`Incapsula`、`同盾 BlackBox`、`a_bogus` - `x-s3-s4e`、`desc`、`bx-pp`、`rid`、`fuid`、`fs` - 线索指向具体壳或运行时问题: - `JSVMP`、`while + switch`、`dispatcher`、`227/226` - `wasm`、`worker`、`postMessage`、`storage.estimate` - `animationend`、CSS 动画取值、`run_js` 检测、浏览器与 Node 不一致 - 用户要的是“案例参照 / 选型 / 速查表”,而不是纯流程编排 ## 重点案例锚点 优先按这四组识别问题,不要把所有线索混成一个“大逆向题”: ### 1. 风控 / 厂商锚点 - `Akamai` - `Kasada` - `PX` / `PX3` - `reese84` / `Incapsula` - `同盾` / `BlackBox` - `a_bogus` 默认读法: - 先怀疑 `token lane`、`sign lane`、`fingerprint lane`、`challenge lane` 混杂 - 优先去读 `risk-fingerprint-and-vendors.md` - 一般会反向驱动 `$web-js-reverse-master-flow` 的 `Phase 1 + Phase 3` ### 2. 验证码 / 业务字段锚点 - `腾讯滑块` - `阿里滑块` - `_rand` - `fuid` - `fs` - `rid` 默认读法: - 先拆“位置 / 图像 / 角度链”和“轨迹 / 加密 / 验签链” - 腾讯 / 阿里滑块更容易同时命中浏览器特性通道与验证码双参数链 - 默认去读 `captcha-protocol-and-mobile.md` ### 3. 壳层 / 混淆锚点 - `JSVMP` - `227` - `226` - `平坦流` - `dispatcher` - `while + switch` - `opcode` - `basearr` 默认读法: - 不先补环境,先做壳层恢复 - 默认去读 `jsvmp-wasm-and-deobf.md` - 反向驱动 `$web-js-reverse-master-flow` 的 `Phase 2` ### 4. 运行时 / 桥接锚点 - `wasm` - `protobuf` - `bx-pp` - `run_js` - `storage.estimate` - `animationend` - `worker` - `postMessage` 默认读法: - 先判断是 builder / writer 遮蔽,还是浏览器特性通道与运行时分叉 - `wasm/protobuf/bx-pp` 更偏 `recover` - `run_js/storage.estimate/animationend` 更偏 `runtime` ## 使用顺序 1. 先读 [routing-matrix.md](references/routing-matrix.md) 做场景归类。 2. 若用户提到具体文章、具体厂商或想确认覆盖面,再读 [article-index.md](references/article-index.md)。 3. 按当前阻塞只加载一份专题 reference: - 风控、指纹、厂商产品:`risk-fingerprint-and-vendors.md` - 浏览器通道、补环境、自动化对抗:`browser-runtime-and-env.md` - `JSVMP`、平坦流、`wasm`、反混淆:`jsvmp-wasm-and-deobf.md` - 验证码、协议参数、移动端案例:`captcha-protocol-and-mobile.md` 4. 然后把任务 handoff 到最合适的执行 skill。 强化规则: - 命中 `Akamai/Kasada/PX/reese84/同盾/a_bogus` 时,除非证据非常充分,否则不要直接谈 purecalc。 - 命中 `JSVMP/227/226/平坦流/混淆` 时,默认只恢复最小切片,不做全量 beautify。 - 命中 `wasm/protobuf/rid/bx-pp` 时,先找 builder、桥接层和写回边界。 - 命中 `run_js/storage.estimate/animationend` 时,先把它当运行时分叉证据,不要直接把它归入“缺对象”。 ## Handoff 规则 ### 总控 / 取证 - 复杂 Web 任务默认回 `$web-js-reverse-master-flow` - 需要阶段判定与工具化时回 `$jsr-reverse` - 需要最小请求链 / sink 定位时回 `$jsr-locate` 或 `$js-reverse-trace-hook` ### 壳层恢复 - `JSVMP` / dispatcher / 平坦流:`$jsr-recover` - 控制流虚假分支裁剪:`$js-controlflow-truth-sampling-prune` - 别名、字符串池、多层赋值:`$js-ast-binding-alias-deobf` - Wasm 型 VM:`$js-wasm-vmp-ir-lifting` - Webpack 运行时 / 打包桥:`$js-webpack-runtime-node-reuse` ### 运行时与补环境 - 浏览器与 Node 分叉:`$jsr-runtime` - 最小环境迁移:`$env-patch` - 已能跑但结果仍漂移:`$js-runtime-diff-env-patching` - 反调试 / DevTools 摩擦:`$js-reverse-env-antidebug` ### 稳定复现 / 协议 - 参数链回放与回归:`$js-reverse-sign-replay` - 验证码双参数链:`$captcha-parameter-chain-bisection` - 无 schema 的 protobuf 二进制:`$protobuf-schema-backfill` - Android 侧 QUIC / So 抓包降级:`$android-quic-downgrade-hook-capture` ## 你应该输出什么 使用本 skill 时,优先输出以下内容,而不是泛泛讲案例: - 当前目标最像哪类 `1997.pro` 案例 - 该类案例的常见“隐藏状态载体 / 隐藏通道 / 壳形态” - 三个最先验证的现场证据点 - 该读哪份 reference - 下一步应该切到哪个执行 skill,为什么 - 当前仍未证明的假设 如果当前任务命中 `JSVMP / 平坦流 / wasm / 混淆`,必须额外输出: - 当前更像 `dispatcher` 壳、字符串解密壳、`wasm` 桥,还是浏览器特性通道 - 关键状态载体是什么:`ip/g`、寄存器数组、栈对象、常量池、样式终态、storage、message 通道 - 最小需要恢复到多深:只要入口 / builder,还是需要关键 `opcode` 家族 / imports / exports - 为什么当前应该先 `recover`、先 `runtime`,还是先回 `locate` 如果当前任务命中 `Akamai/Kasada/PX/reese84/同盾/a_bogus/腾讯滑块/阿里滑块/rid/fuid/fs/bx-pp/run_js/storage.estimate/animationend`,必须额外输出: - 这一类问题最常见的隐藏状态载体 - 最可能的第一分叉点 - 不该先做的误操作 - 该回到 `$web-js-reverse-master-flow` 的哪个 phase ## 不要这样用 - 不要把“厂商名相似”当成已经证明算法相同。 - 不要跳过浏览器真实证据,直接套历史案例做纯算。 - 不要默认加载全部 references;只读当前最相关的一份或两份。 - 不要让案例经验盖过真实现场。这个 skill 提供的是“起刀位置”,不是证据本身。 - 不要因为看到了 `wasm` 或 `JSVMP` 就默认全量 lifting / 全量反编译。
More AI & ML skills
writing-shape
mattpocock/skills
Writing, exploit: shape raw material into an article, paragraph by paragraph.
writing-fragments
mattpocock/skills
Writing, explore: mine raw fragments, no structure yet.
full-output-enforcement
leonxlnx/taste-skill
Overrides default LLM truncation behavior. Enforces complete code generation, bans placeholder patterns, and handles token-limit splits cleanly. Apply to any task requiring exhaustive, unabridged output.

