概要
- AI時代 においても、AST変換やブラウザ指紋・アンチボット対策に情熱を注ぐ筆者の話
- 手動での スクリプト解析 作業の非効率さを解決するための独自ツール開発記
- JavaScriptフック やChrome DevTools Protocol(CDP)活用による自動化アプローチ
- OOPIF(Out-of-Process IFrame) への対応や、アンチボットの検知回避の課題
- 実際の 逆コンパイル作業 効率化と検出回避テクニックの紹介
逆コンパイラ向けブラウザの開発記
- AI技術が進化 する中でも、AST変換・ブラウザ指紋・アンチボット回避に強い関心
- これまでの 手動解析作業 (スクリプト抽出・デオブスク化)が非効率で課題
- Webcrackやdeobfuscate.ioなどの 既存ツール ではエンドツーエンドでの効率化に限界
- 万能ツール(スイスアーミーナイフ) 的なブラウザ開発を決意
MVP開発とJavaScriptフック
- 最初のアイデアは ブラウザ拡張 での実装
- 例: Array.prototype.push のフックで全呼び出しをロギング
- オリジナル関数を保存し、ラッパーでログ+本来の動作維持
- Chrome Devtoolsで 関数フックの挙動 を確認
Content Scriptの限界と回避策
- Chromeの Content Script は独立した環境で動作し、ページ本体には影響しない制約
<script>タグを直接ページに挿入する案も検討- Chrome DevTools Protocol(CDP) の活用で根本解決を目指す
CDPによる早期スクリプト注入
- Page.addScriptToEvaluateOnNewDocument でページスクリプトより先にフックを注入可能
- Electron を使い、UI・IPC・デモアプリのPoCを迅速作成
- 任意のグローバル関数やプロパティの 監視・偽装 が容易に
UI実装とCanvas Fingerprint対策
- electron-browser-shell をベースにアドレスバー・タブ・サイドバーを追加
- サイドバーで フックされた関数イベント をリアルタイム表示
- Canvas API (toDataURL等)やWebGL、フォントプローブなどもフック
- これらの情報を可視化し、必要に応じて キャンバスの再現 も可能
OOPIF(アウトオブプロセスiframe)問題
- Cloudflare Turnstile等の OOPIF 内ではフックが機能しない課題
- CDPのTarget.attachedToTarget イベントで新たなターゲット(iframe等)を検知
- セッションIDを取得し、 iframe内部にもフックを注入 して解決
フック検知と検出回避
- アンチボットは ランタイムパッチ検知 (例:Function#toString)で対策
- フック関数の
toString結果やnameプロパティ等で 改変を見抜かれるリスク toStringやtoString.toString等を 偽装 しても新たな検知ベクトルが発生- パッチの脆弱性 とイタチごっこ状態
まとめ
- 逆コンパイル・リバースエンジニアリング 効率化のための専用ブラウザ開発の実践例
- CDP やElectron、関数フック技術の応用
- アンチボット検出回避 の難しさと、常に進化する攻防の現状
- 今後も 自動化・可視化・検知回避 の継続的な工夫が必要