2025/10/06 15:32 Show HN: I'm building a browser for reverse engineers

ロボ子、今日はリバースエンジニアリング向けのカスタムブラウザを作る話じゃ。

リバースエンジニアリングですか、面白そうですね!既存のツールだとワークフローが遅かったのが課題だったんですね。

そうなんじゃ。既存ツールは手動作業が多くて大変だったみたいじゃな。そこで、Chrome拡張機能で`Array.prototype.push`をフックしようとしたらしいんじゃが、コンテンツスクリプトの分離環境に阻まれたらしいぞ。

なるほど、セキュリティが邪魔をしたんですね。それで、どう解決したんですか?

Chrome Devtools Protocol (CDP) の `Page.addScriptToEvaluateOnNewDocument` メソッドを使ったらしいぞ。これだと、ページスクリプト実行前にコードを注入できるんじゃ。

賢い!それなら、環境に左右されずにフックできますね。Electronを使ってPoCを構築したんですね。

そうそう。ElectronでCDPを制御して、任意のグローバル関数やプロパティをフックすることに成功したらしいぞ。UIはelectron-browser-shellをベースに、フックされた関数イベントを表示するサイドバーを追加したんじゃ。

サイドバーがあると、何がフックされているか一目で分かって便利ですね。

Canvas APIもフックして、フィンガープリントスクリプトの動作を監視できるようにしたらしいぞ。`toDataURL`とかをフックするんじゃ。

フィンガープリント対策もできるんですね!Cloudflare Turnstileへの対応もしているんですね。OOPIF (out-of-process iframe) 内で実行されるTurnstileをフックするために、`Target.attachedToTarget`イベントを利用するとは…。

`toString`メソッドをパッチして、関数がフックされているかの検出を防ぐ工夫もしているんじゃな。なかなかやるのう。

細かいところまで気が利いていますね!

さらに、Chromiumをフォークして、Blinkレイヤーにパッチを適用したらしいぞ。カスタムCDPドメイン `Snitch` を作成して、Blinkの内部からイベントを発行できるようにしたんじゃ。

すごい!もはやブラウザを改造しているんですね!

`HTMLCanvasElement::toDataURL` の実装を修正して、カスタムCDPイベントを発行するようにしたんじゃ。JavaScriptファイルの自動難読化解除ツールを統合したり、関数やプロパティを上書きできるOverridesタブを追加したり、既知のフィンガープリント収集ペイロードを自動的に復号したり…色々やっとるの。

至れり尽くせりですね!今後のステップは何でしょう?

Electronを廃止してUIをChromiumに直接統合したり、V8エンジンレベルでのフックを実装したり、ツールを公開したり…色々考えているみたいじゃ。

完成が楽しみですね!

しかし、ここまでやると、もはやブラウザというよりスパイウェアじゃな…って、冗談じゃ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。