Communitygithub.com

DQmyth/js-reverse-ops

專業等級的 JavaScript 逆向工程技能:基於證據的工作流程、逐字沙盒測試框架、19 個經過實戰考驗的作戰手冊、136 個腳本、公開基準測試。

js-reverse-ops 是什麼?

這是一個專為開發者與 AI 代理設計的結構化 JavaScript 逆向工程技能,旨在取代臨時的除錯工作階段。它提供了一套基於證據且可重複的工作流程,包含 19 個針對常見逆向難題(如環境網關、時間鑰匙、混淆簽名者等)的作戰手冊,以及超過 130 個用於路由、執行、驗證和發送的腳本。此技能支援在本地(Node.js 或 JavaScript 檔案)或瀏覽器輔助環境中操作,並透過明確的階段(定位、執行、恢復、重播)引導使用者。其核心優勢在於預防代價高昂的沙盒錯誤,透過嚴格的證據規則避免將推測視為事實,並確保所有恢復的欄位、Cookie 或簽名者輸入都必須經過驗證的瀏覽器觀察或本機重播工件來支持。此公開版本包含所有通用工具、腳本和教學,但排除了特定於站點的案例庫和私有測試夾具。

相容平台~Claude Code~Codex CLI~Cursor✓Antigravity
npx skills add DQmyth/js-reverse-ops

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

JS 逆向工程操作 (JS Reverse Ops)

將此技能視為一個結構化的逆向工程工作流程,而不是一次性的臨時除錯工作階段。

從這裡開始

  1. 立即:分類請求(簽名恢復、離線去混淆、執行期追蹤、環境重建……),並僅載入該任務類型所需的參考檔案。
  2. 立即:如果工作涉及在本機執行瀏覽器 JS,請先閱讀 references/env-rebuild-recipes.md — 其中有 10 張策略卡(原生遮蔽類別、類別標記探針、無主機內建函式、真實計時器、內聯代理、校準預言機),可以預防最昂貴的沙盒錯誤。
  3. 立即:如果對依賴項或工具鏈有疑問,請在編寫探針前遵循 references/toolchain-bootstrap.md。
  4. 下一步:如果重建的流程「幾乎可行」(第一個 token 有效,但後續失敗、得到 200 狀態碼但答案錯誤、無法解釋的金鑰分歧),請停止探測並閱讀 references/misdiagnosis-patterns.md。
  5. 行動:進入核心工作流程的匹配階段並執行 — 不要在確認階段停下來。

範圍

此公開版本保留:

  • 基於階段的 定位、執行、恢復 和 重播 路由
  • 用於萃取、執行期捕獲正規化、重播腳手架和工件生成的可重複使用腳本
  • 瀏覽器驅動的 JavaScript 逆向工程的通用參考資料、規則和範本

此公開版本刻意排除:

  • 私有的或特定於站點的案例庫
  • 捕獲的測試夾具和驗證語料庫
  • 與命名站點相關的具體基準測試目標、憑證和重播筆記

核心工作流程

從最小的可靠上下文開始:

  • 未知目標:執行 node scripts/js_reverse_ops.js <target-url-or-file> [--json]
  • 現有的筆記、掛鉤日誌或失敗摘要:執行 node scripts/map_case_to_pattern.js <notes.md> 並將 --notes <notes.md> 傳遞給 scripts/js_reverse_ops.js
  • 可執行的作戰手冊:執行 node scripts/run_playbook.js <target> --notes <notes.md> --out runs/current 來產生 runbook、路線計劃、引導聲明/來源/風險/重播工件以及掛鉤腳手架
  • 下一個操作指令:當存在 run 目錄但執行期、重播或就緒性阻礙因素使下一步不明確時,執行 node scripts/recommend_next_action.js runs/current --json
  • 本機 JS 或 HTML 目標:執行 scripts/triage_js.sh <path>,然後執行與目標家族匹配的最小萃取器
  • 瀏覽器輔助目標:在收集執行期證據之前驗證瀏覽器和橋接器的健康狀況
  • 反分析症狀:在更改掛鉤或瀏覽器策略之前,執行 node scripts/select_anti_detection_profile.js --symptoms "<symptoms>";設定檔選擇只會改變觀察策略,之後仍須進行執行期/重播驗證
  • 公開品質檢查:在發布前或更改路由器、模式記憶、範例或作戰手冊後,執行 node scripts/run_public_benchmarks.js
  • 公開版本風險審計:在推送前,執行 node scripts/explain_public_release_risk.js --json --strict 來說明跟蹤檔案、秘密、路徑、捕獲和生成工件的風險
  • 公開能力摘要:在將此技能與其他逆向工程套件進行比較時,執行 node scripts/generate_capability_scorecard.js
  • 市場缺口摘要:在決定如何改進此技能以對抗先進的逆向工程技能和 MCP 工具鏈時,執行 node scripts/generate_market_gap_scorecard.js
  • 外部回歸矩陣:執行 node scripts/compare_external_skill_matrix.js --json 來將此技能與瀏覽器 MCP、靜態反編譯器、代理 JS 逆向和跨領域 RE 設定檔進行比較
  • 瀏覽器 MCP 煙霧測試計劃:在執行適配器特定的瀏覽器煙霧檢查之前,執行 node scripts/plan_browser_mcp_smoke.js --server-family chrome_devtools_mcp --json
  • 瀏覽器 MCP 煙霧測試驗證:在聲明適配器煙霧測試觀察結果之前,執行 node scripts/verify_browser_mcp_smoke_record.js --record <mcp-execution.json> --json
  • 瀏覽器 MCP 交付迴圈:執行 node scripts/run_mcp_delivery_loop.js <target> --record <mcp-execution.json> --out runs/current --json 來一次完成腳手架搭建、驗證、提升、驗證和就緒評估
  • 重播失敗診斷:在更改簽署者程式碼之前,執行 node scripts/diagnose_replay_failure.js --run-dir runs/current --json 或傳遞 --replay-record <record.json>
  • 重播客戶端生成:執行 node scripts/generate_replay_delivery_client.js --record <accepted-replay.json> --out runs/current/replay-client --json 來產生已清理的 Node 和 Python 重播客戶端
  • 重播客戶端驗證:在將生成的客戶端視為交接工件之前,執行 node scripts/validate_replay_delivery_client.js runs/current/replay-client --json
  • 靜態真值閘道:在推廣可讀的靜態輸出之前,執行 node scripts/assess_static_recovery_truth.js --original <input.js> --recovered <output.js> --json
  • 源碼映射優先的靜態規劃:如果 bundle 包含 sourceMappingURL、sourceURL、內聯映射或 X-SourceMap 註解,請在 AST 清理之前執行 node scripts/plan_static_toolchain.js <bundle.js> --json
  • 領域交接驗證:在將 WASM、封包、行動端、原生端或除錯器的發現合併回 JS 證據之前,執行 node scripts/validate_domain_handoff_record.js --record <handoff-record.json> --json --strict
  • CLI 包裝器:使用 node scripts/jsro.js <command> 或 jsro 套件的 bin 來執行 route、run、validate、next、benchmark、scorecard、marketgap、releaserisk、externalmatrix、mcpsmoke、mcpsmokeverify、mcploop、replaydiagnose、replayclient、replayclientcheck、statictruth、handoff、handoffcheck、install 和 publish 等指令
  • 一鍵安裝或發布:使用 bash scripts/install_local.sh 和 bash scripts/publish_release.sh
  • 已接受的回應加上令人困惑的瀏覽器可見值:在升級到簽署者恢復之前,先檢查頁面端的渲染和抑制邏輯,並使用 playbooks/accepted-response-hidden-dom.md
  • 已接受的回應加上頁面本機嵌入的字型或字形實體:提取當前回應的字型,在頁面範圍內解決字形映射,並使用 playbooks/embedded-runtime-font-mapping.md
  • 即使已恢復一個可接受的摘要,重播仍然失敗:檢查引導階段的 Cookie 寫入順序、摘要收集器和包裝 Cookie 組合,然後使用 playbooks/bootstrap-digest-ladder.md
  • 一個端點總是先返回 JavaScript,只有在腳本被執行並針對相同路徑重播後才返回陣列:將其視為迭代預熱鏈,而不是尋找第二個隱藏端點,並使用 playbooks/iterative-script-warmup-same-endpoint.md
  • 簽署者依賴一個伺服器發出的時間和一個 wasm 或模組輔助函式:凍結時間來源,證明確切的簽署者輸入形狀,並使用 playbooks/server-time-gated-wasm-signer.md
  • 摘要輔助函式名稱看起來很標準,但瀏覽器輸出與標準函式庫和原始本機輔助函式都不同:首先隔離最小的執行期修補面,並使用 playbooks/patched-runtime-digest-branch.md
  • 一個大型 bundle 隱藏了一個你真正需要進行重播的小型執行期輔助函式:首先提取該輔助函式,而不是模擬整個頁面,並使用 playbooks/runtime-bundle-signer-extraction.md
  • 全域 token 輔助函式不存在或具有誤導性,但 XMLHttpRequest.open 使用簽署者欄位重寫了受保護的 URL:將重寫後的 URL 視為簽署者輸出,保留腳本順序和執行期狀態,並使用 playbooks/xhr-open-url-rewrite-runtime-replay.md
  • 可見的請求合約是穩定的,但不同的 HTTP 客戶端會產生分歧:在憑空發明更多簽署者狀態之前,先透過傳輸階梯進行升級,並使用 playbooks/transport-profile-ladder.md
  • 驗證回應看起來嘈雜或悲觀,但資料請求仍然成功:將資料端點視為接受預言機,並使用 playbooks/lenient-verify-data-gate.md
  • 頁面暴露一個簡單的請求或一個輔助欄位,但後續頁面失敗並出現一個 token 形狀的閘道:在擴大到完整的 VM 恢復之前,先證明可見請求是否是誘餌,並使用 playbooks/decoy-page-request-hidden-token-gate.md
  • 一個挑戰圖像是一個固定的小網格,每個儲存格包含一個字形或符號:首先解決網格分配路徑,並使用 playbooks/grid-challenge-template-matching.md
  • 多階段挑戰需要全新的重新載入、一個播種的簽署者證明,然後使用一個已接受的階段值作為下一個金鑰:在解決下游解密之前,先驗證第一個基準請求,並使用 playbooks/fresh-reload-seeded-signer-step-key-ladder.md
  • 一個重播路徑在第一輪有效,但後續輪次只有在重播前一輪後才能恢復對等性:保留明確的相同頁面輪次階梯,並使用 playbooks/same-page-prior-round-signer-replay.md
  • 桌面版 HTML 不穩定,但行動端或應用程式請求設定檔落在一個具有後續 JSON 水合的 shell 頁面上:首先恢復 shell 請求包裝器和路由映射,然後使用 playbooks/mobile-shell-api-pivot.md
  • 對於捆綁的加密函式庫,其原始語句受環境限制(瀏覽器與沙盒分支、修改過的 base64 字母表或雜湊常數、沙盒 token 被拒絕而瀏覽器 token 通過),請路由至 playbooks/env-gated-crypto-differential.md。
  • 對於捕獲的 token URL 成功重播的狀態性 VM 簽署者,在嘗試 VM 語意恢復之前,請路由至 playbooks/browser-assisted-token-replay.md。
  • 對於需要無瀏覽器本機預言機的自訂 VM 簽署者,請路由至 playbooks/jsdom-native-vm-differential.md,並根據一個有儀器的瀏覽器真實情況來區分指令和常數流。
  • 對於短 TTL 的 token,請路由至 playbooks/short-ttl-inline-proxy.md:透過基於 Promise 的資源攔截器,在 token 計算框架內發送真實請求。
  • 打包或類似 VM 的程式碼:保留原始工件,增量恢復結構,並標記已驗證的語意
  • 重播交接:在編寫 Node 或 Python 交付程式碼之前,匯出一個穩定的工件套件

最佳工具基準線

使用內建腳本進行路由、證據、工件和可重複性。僅在專業工具擅長的狹窄任務中使用它們:

  • 在進行任何去混淆處理之前,優先使用源碼映射或原始模組
  • webcrack 用於常見的 obfuscator.io、類似 webpack 的 bundle、字串陣列和初次拆解
  • wakaru 用於現代的壓縮輸出,當語法正規化和可讀性比執行期真實性更重要時
  • ast-grep、Babel 或 recast 用於小型、有針對性的結構轉換
  • humanify 或其他 LLM 重新命名器,僅在清理程式碼之後,並且僅當識別碼恢復值得將片段發送到工作區外部時使用

不要讓外部的去混淆器取代證據。每個恢復的欄位、Cookie、簽署者輸入或重播輔助函式仍然需要一個經過驗證的瀏覽器觀察或一個本機重播工件。

若要與相鄰的逆向工程技能和工具進行更廣泛的比較,請使用 references/external-skill-comparison-2026-06-04.md。

發布安全閘道

在發布此公開技能之前,請從公共儲存庫根目錄執行 bash scripts/check_public_release.sh。公開套件不得包含:

  • 私人站點筆記、即時捕獲、憑證、Cookie、Token 或客戶特定路徑
  • 由 git 追蹤的 tmp/、快取、__pycache__、.pyc 或本機基準測試輸出
  • 絕對的本機使用者路徑、Bearer Token、GitHub Token、雲端金鑰、JWT 或私鑰
  • 未清理的片段,其識別出超出通用範例範圍的即時目標

將私有語料庫和本機驗證套件保留在私有工作區中。僅發布通用的作戰手冊、腳本、範本和已清理的範例。

主要參考資料

  • references/env-rebuild-recipes.md
  • references/misdiagnosis-patterns.md
  • references/toolchain-bootstrap.md
  • references/standard-workflow-cookbook.md
  • references/stage-gates.md — 嚴格的進入/退出條件、時間盒、回退鏈
  • references/decision-handoff.md — 階段/工作階段之間的增量僅交接協定
  • references/task-types.md
  • examples/case-walkthrough-combinatorial-gates.md — 已清理的敘述:組合環境閘道 + 校準預言機
  • examples/case-walkthrough-timer-selfcheck-and-fake-200s.md — 已清理的敘述:計時器自我檢查、時間衍生金鑰、200-假資料迷宮

注意:完整版中引用的逐字框架腳手架生成器僅隨私有工作區一起發布;此公開套件在 references/env-rebuild-recipes.md 中記錄了等效規則。

  • references/stages/locate.md
  • references/stages/runtime.md
  • references/stages/recover.md
  • references/stages/replay.md
  • references/rules/evidence-rules.md
  • references/rules/runtime-first.md
  • references/rules/routing-rules.md
  • references/rules/replay-rules.md

發布說明

此公開變體旨在作為可重複使用的技能套件進行分享。請將私有夾具、即時捕獲以及客戶或站點特定的筆記保存在單獨的私有工作區或儲存庫中。

相關技能