/DEPENDENTLOADFLAG (既定の依存ロード フラグの設定)

/dependentloadflag オプションには、2017以降の Visual Studio が必要です。

オペレーティングシステムが、静的にリンクされたモジュールのインポートを解決するときに使用される既定の読み込みフラグを設定します。

構文

/Dependentloadflag[:load_flags]

引数

load_flags
モジュールの静的にリンクされたインポート依存関係を解決するときに適用する読み込みフラグを指定する、省略可能な整数値。 既定値は 0 です。 サポートされているフラグ値の一覧については、 LOAD_LIBRARY_SEARCH_* LoadLibraryExのエントリを参照してください。

Remarks

オペレーティングシステムによって、静的にリンクされたモジュールのインポートが解決されると、 既定の検索順序が使用されます。 /Dependentloadflag オプションを使用して、これらのインポートの解決に使用される検索パスを変更する load_flags 値を指定します。 サポートされているオペレーティングシステムでは、パラメーターを使用する場合の LoadLibraryEx の場合と同様に、静的なインポートの解決の検索順序が変更され LOAD_LIBRARY_SEARCH ます。 Load_flags による検索順序の詳細については、「 LOAD_LIBRARY_SEARCH フラグを使用した検索順序」を参照してください。

このフラグを使用すると、1つの DLL 植栽攻撃 ベクトルをより困難にすることができます。 たとえば、DLL を静的にリンクしたアプリについて考えてみましょう。

  • 攻撃者は、アプリケーションディレクトリなど、インポート解決の検索パスで前に同じ名前の DLL をプラントに送り込むことができます。 保護されたディレクトリは、攻撃者が変更するのが困難ですが、不可能ではありません。

  • アプリケーション、%windows%\system32、および% windows% ディレクトリに DLL がない場合、インポートの解決は現在のディレクトリに分類されます。 攻撃者は、そこに DLL を送り込むことができます。

どちらの場合も、link オプション /DEPENDENTLOADFLAG:0x800 (フラグの値) を指定すると、 LOAD_LIBRARY_SEARCH_SYSTEM32 モジュールの検索パスは%windows%\system32 ディレクトリに制限されます。 他のディレクトリに対する植栽攻撃からの保護を提供します。 詳細については、「 ダイナミックリンクライブラリのセキュリティ」を参照してください。

任意の DLL の /dependentloadflag オプションによって設定された値を表示するには、 DUMPBIN コマンドを使用して、 /loadconfig オプションです。

/dependentloadflag オプションは Visual Studio 2017 で新しく追加されたものです。 Windows 10 RS1 以降のバージョンで実行されているアプリにのみ適用されます。 このオプションは、アプリを実行する他のオペレーティングシステムでは無視されます。

Visual Studio 開発環境で dependentloadflag リンカーオプションを設定するには

  1. プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。 詳細については、Visual Studio での C++ コンパイラとビルド プロパティの設定に関するページを参照してください。

  2. [ 構成プロパティ] [ > リンカー > コマンドライン ] プロパティページを選択します。

  3. [ 追加オプション] にオプションを入力します。

このリンカーをコードから設定するには

関連項目