DllLoadSearchOrder
Win32のDLLロード順序
DLLのロードについては、
- 複数バージョン混在による問題(いわゆるDLLヘル)
- トロイの木馬による挿げ替え(キーロガーなど)への対策
- システム配備者による意図的な挿げ替え(アプリケーションの異常判定)
- システム的な整合性の保持(共有メモリーの利用)
などのさまざまな観点から、Windowsのサービスパックのレベルで変更が行われることがある。
また、アプリケーション側でも、動的ロード(LoadLibrary/GetProcAddress)、静的ロード(リンク時にimportライブラリを指定)、さらに静的ロードでの遅延ロード、マニフェストによる指定などの種々の方法によって制御できたりできなかったりする。
ここでは、DLLのロードに関する資料へのポインタを示す。
MSDN
KnownDLLs?
INFO: Windows NT/2000/XP Uses KnownDLLs Registry Entry to Find DLLs
KnownDLLsキーは、共用メモリーなどを利用しているため、全プロセスで同一インスタンスの利用が必要なDLLを特定するために設定されている。
Windows Vistaでは、ブート時にKnownDLLsに登録されたDLLが参照するDLLもKnownDLLsとして扱うように変更されている。
SafeDllSearchMode
Dynamic-Link Library Search Order
SafeDllSearchModeキーによる制御は、カレントディレクトリの参照優先順位を下げることで、トロイの木馬などによる挿げ替えを防止することが目的と考えられる。
NyaRuRuさんのページ
DLLの闇
DLLのロード問題に関するNyaRuRuさんの言及へのポインタ。
DirectX Graphicsの隠し設定を利用した開発テクニック
DirectX APIはDLLとして提供されているため、DLL操作に関する種々のテクニックに言及されている。
- プロセス終了処理とDLL_PROCESS_DETACH
- DLLEntryで呼び出し可能なAPIが限定されていることに関する注意
DLL検索順序(1)
SafeDllSearchModeやSetDllDirectory APIについて。
Side-by-Side
Side-by-Sideについて調べられたこと。
GDI+セキュリティFIX……
GDI+セキュリティFIXによるDLL置き換えによって発生した問題に関する調査。
APIフック
APIフックに関する話題。
DLLの闇 (2)
Dependency Walker の使い方など。
DependencyWalker
DLLやEXEファイルが依存するDLLを調査するための最も重要なツール。
Visual Studioにも付属しているが、最新版は作者のSteve P. Millerのページに置かれている。
APIHijack
DLLにフックを埋め込む
Win32 API hooking: Another reason why it might not work
上記に関連して。直接IATを参照せずにローダーファンクション(と仮称する)経由で呼び出されることがあるということを示す。
Keyword(s):
References: