1997-pro-web-reverse-casebook について
Web JavaScript のリバースエンジニアリング向けに、1997.pro の記事を参照して、ベンダー・パラメーター・ランタイムの手掛かりから資料や証拠確認、実行スキルを案内するスキルです。主制御フローや現場での調査に代わるものではなく、着手点を示します。
主な機能
- 01ベンダーや技術的な手掛かりを分類
- 02参照資料と証拠確認の方向を提示
- 03リスク制御、CAPTCHA、難読化、ランタイムを扱う
- 04事例の知見を実行スキルへ引き継ぐ
活用シーン
- 01Akamai や Kasada のリスク制御の手掛かりを分類
- 02JSVMP や平坦化制御フローの復元方針を選ぶ
- 03CAPTCHA パラメーター連鎖の事例を探す
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ firstrui/ codex-reverse-skills --skill 1997-pro-web-reverse-casebookインストール後、Claude Code で/1997-pro-web-reverse-casebookを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agents/openai.yamlreferences/article-index.mdbrowser-runtime-and-env.mdcaptcha-protocol-and-mobile.mdjsvmp-wasm-and-deobf.mdrisk-fingerprint-and-vendors.mdrouting-matrix.md詳細
1997.pro Web リバース事例集
役割
このスキルは、1997.pro の公開記事コーパスを「事例ナレッジベース+シナリオルーター」にまとめたものです。
担当すること:
- タスクにベンダー名、パラメーター名、シェルの形態、リスク管理の手掛かりが現れたとき、最も近い事例の種類をすばやく判断します。
- まず読むべき reference、最初に調べる証拠の種類、最初に使う MCP アクションのセットを案内します。
1997.proの事例から得た知見を既存の実行スキルに橋渡しします。並行する別の統括フローは作りません。
代替しないもの:
$web-js-reverse-master-flow$jsr-reverse$mcp-js-reverse-playbook
複雑なタスクは引き続き、これらの統括スキルまたは実行スキルに戻る必要があります。このスキルが担当するのは、「どの種類の問題に似ているか、どこから切り込むべきか」だけです。
担当範囲:
- このスキルは特定サイト/技術事例のナレッジベースです。
1997.proの記事体系に基づき、事例の参照先、技術的な手掛かり、着手の提案を提供します。 - 大局的なフェーズ判定を引き継いだり、
証拠ゲート -> locate -> recover -> runtime -> env-patch -> replayの主フローを書き換えたりしません。 - 現在のタスクが正式なフェーズ切り替えに入っている場合、フェーズの裁定権は必ず
$web-js-reverse-master-flowに戻してください。
デフォルトの連携
デフォルトの実行スタックは変更しません:
chrome-devtools-mcpjs-reversejshook
活用方法:
- まず
chrome-devtools-mcpとjs-reverseを使い、実際のリクエスト、実際の中間状態、実際のトリガー操作を取得します。 - 手掛かりが
1997.proの特定の事例に似てきたら、このスキルを使って reference と専門スキルを選びます。 - 難読化が強い場合、複雑な Hook、Stealth、高度なセマンティクス復元が必要な場合は、
jshookを前面に出します。 - 現在のタスクが正式なフェーズ切り替えに入っている場合、最終的なフェーズ判断は引き続き
$web-js-reverse-master-flowに委ねます。
使用するタイミング
以下のいずれかに該当する場合、このスキルを使用します:
- ユーザーが
1997.pro、サイト内の記事名、著者の関連記事に明示的に言及している、または「このブログの方法に沿って進めたい」と希望している場合 - 手掛かりが特定のベンダー/製品/パラメーターを示している場合:
Akamai、Kasada、PX3、reese84、Incapsula、同盾 BlackBox、a_bogusx-s3-s4e、desc、bx-pp、rid、fuid、fs
- 手掛かりが特定のシェルやランタイムの問題を示している場合:
JSVMP、while + switch、dispatcher、227/226wasm、worker、postMessage、storage.estimateanimationend、CSS アニメーションによる値の取得、run_js検出、ブラウザーと Node の不一致
- 求められているのが「事例参照/選定/クイックリファレンス」であり、単なるフローの編成ではない場合
重要な事例の手掛かり
問題はまず次の4つのグループに分け、すべての手掛かりをひとつの「大きなリバース問題」にまとめないでください:
1. リスク管理/ベンダーの手掛かり
AkamaiKasadaPX/PX3reese84/Incapsula同盾/BlackBoxa_bogus
デフォルトの見方:
- まず
token lane、sign lane、fingerprint lane、challenge laneが混在していないか疑います。 - 優先して
risk-fingerprint-and-vendors.mdを読みます。 - 通常は
$web-js-reverse-master-flowのPhase 1 + Phase 3に逆向きの影響を与えます。
2. CAPTCHA/業務フィールドの手掛かり
腾讯滑块阿里滑块_randfuidfsrid
デフォルトの見方:
- 「位置/画像/角度のチェーン」と「軌跡/暗号化/署名検証のチェーン」を分けて考えます。
- 腾讯/阿里のスライダー CAPTCHA は、ブラウザー特性チャネルと CAPTCHA の二重パラメーターチェーンの両方に該当しやすいです。
- デフォルトでは
captcha-protocol-and-mobile.mdを読みます。
3. シェル層/難読化の手掛かり
JSVMP227226平坦流dispatcherwhile + switchopcodebasearr
デフォルトの見方:
- 先に環境を補うのではなく、まずシェル層を復元します。
- デフォルトでは
jsvmp-wasm-and-deobf.mdを読みます。 $web-js-reverse-master-flowのPhase 2に逆向きの影響を与えます。
4. ランタイム/ブリッジの手掛かり
wasmprotobufbx-pprun_jsstorage.estimateanimationendworkerpostMessage
デフォルトの見方:
- builder / writer による遮蔽なのか、ブラウザー特性チャネルとランタイムの分岐なのかを先に判断します。
wasm/protobuf/bx-ppはrecover寄りです。run_js/storage.estimate/animationendはruntime寄りです。
使用順序
- まず routing-matrix.md を読み、シナリオを分類します。
- ユーザーが特定の記事やベンダーに言及した場合、または対応範囲を確認したい場合は、次に article-index.md を読みます。
- 現在のボトルネックに応じて、専門 reference を1つだけ読み込みます:
- リスク管理、フィンガープリント、ベンダー製品:
risk-fingerprint-and-vendors.md - ブラウザーチャネル、環境の補完、自動化への対抗:
browser-runtime-and-env.md JSVMP、平坦流、wasm、難読化解除:jsvmp-wasm-and-deobf.md- CAPTCHA、プロトコルパラメーター、モバイル端末の事例:
captcha-protocol-and-mobile.md
- リスク管理、フィンガープリント、ベンダー製品:
- その後、最適な実行スキルにタスクを引き継ぎます。
強化ルール:
Akamai/Kasada/PX/reese84/同盾/a_bogusに該当する場合、証拠が非常に十分でない限り、purecalc の話を直接始めないでください。JSVMP/227/226/平坦流/混淆に該当する場合、デフォルトでは最小限のスライスだけを復元し、全体の beautify は行いません。wasm/protobuf/rid/bx-ppに該当する場合、まず builder、ブリッジ層、書き戻し境界を探します。run_js/storage.estimate/animationendに該当する場合、まずランタイム分岐の証拠として扱い、すぐに「オブジェクト不足」に分類しないでください。
引き継ぎルール
統括/証拠収集
- 複雑な 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 の二重パラメーターチェーン:
$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 / 全量反编译。