DLLインジェクション
表示
DLLインジェクション (DLL Injection) とは、アプリケーションのDLL上のルーチンやリソースへ本来の処理とは異なる処理を行わせるために、DLLイメージを注入してDLL関数の呼び出しを横取り (インターセプト) する技法のこと。通常、アプリケーション (DLL) 開発者と別の者が、何らかの理由で、アプリケーション開発者の意図している処理を改変させる場合に用いられる。
例
[編集]- アプリケーションの動作環境を偽装する
- 「実際にはWindows 7上で動作しているが、アプリケーションからの問い合わせには『Windows XPで動作している』と偽装した応答を返す」など。多くのオペレーティングシステムには稼働環境情報を提供するDLL内のサービス関数がある。そのサービス関数をフックして、本来とは異なる応答を返す処理ルーチンを実行させる。
- 設定情報のアクセス処理を変更する
- ポータブルアプリケーションで多用される。動作のためにレジストリなどへ読み書きが必須なアプリケーションを、書き込み不可媒体 (CD-ROMなど) 上で動作させる場合の手段のひとつとして利用される。
- DLL関数呼び出しを監視・記録する
- 監視・記録したいDLL関数をフックして、アプリケーションがDLL関数を呼び出した際、そのログを記録してから本来のDLLへ処理を渡す。そうすることで、DLL関数の呼び出しを記録し、デバッグやパフォーマンス計測などに利用することができる。