例外ハンドラのハッキング:DirectX、Flash、そしてコード修正の物語

2025-05-21

チームは、未処理例外を処理するために`SetUnhandledExceptionFilter`を使用中に、フラストレーションのたまる問題に遭遇しました。Direct3DとFlashが独自の例外フィルターをインストールしており、チームの解決策が効果を失っていたのです。これを解決するために、彼らは大胆な戦略を採用しました。コード修正によって`SetUnhandledExceptionFilter`関数を直接無効にし、独自の例外ハンドラーが優先されるようにしたのです。この記事では、コード修正のプロセス、関数アドレスの取得、最初の命令の検証、そしてコード置換のための`VirtualProtect`と`FlushInstructionCache` APIの使用について詳しく説明しています。彼らの解決策により、例外レポート機能が復旧しました。

開発