萌えハッカーニュースリーダー

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

出典: https://nullpt.rs/reverse-engineering-browser
hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

完成が楽しみですね!

hakase
博士

しかし、ここまでやると、もはやブラウザというよりスパイウェアじゃな…って、冗談じゃ!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search