/DEPENDENTLOADFLAG(设置默认的依赖项加载标志)

/DEPENDENTLOADFLAG 选项需要 Visual Studio 2017 或更高版本。

设置操作系统解析模块静态链接导入时使用的默认加载标志。

语法

/DEPENDENTLOADFLAG[:load_flags]

参数

load_flags
一个可选的整数值,该值指定在解析模块静态链接导入依赖项时要应用的加载标志。 默认值为 0。 有关受支持标志值的列表,请参阅 LoadLibraryEx 中的 LOAD_LIBRARY_SEARCH_* 条目。

注解

操作系统解析模块静态链接导入时,使用默认搜索顺序。 使用 /DEPENDENTLOADFLAG 选项指定 load_flags 值,此值可更改用于解析这些导入的搜索路径。 在支持的操作系统上,它会更改静态导入解析搜索顺序,类似于 LoadLibraryEx 在使用 LOAD_LIBRARY_SEARCH 参数时执行的操作。 有关 load_flags 设置的搜索顺序的信息,请参阅使用 LOAD_LIBRARY_SEARCH 标志的搜索顺序

可使用此标志让 DLL 植入攻击 向量变得更加困难。 例如,请考虑静态链接 DLL 的应用:

  • 攻击者可以在导入解析搜索路径(如应用程序目录)中植入同名的 DLL。 攻击者更难更改受保护的目录(但并非不可能)。

  • 如果应用程序、%windows%\system32 和 %windows% 目录中缺少 DLL,则导入解析将落到当前目录。 攻击者可能会在当前目录中植入 DLL。

在这两种情况下,如果指定链接选项 /DEPENDENTLOADFLAG:0x800(标志 LOAD_LIBRARY_SEARCH_SYSTEM32 的值),则模块搜索路径限制为 %windows%\system32 目录。 它可以防止对其他目录植入攻击。 有关详细信息,请参阅动态链接库安全性

若要查看任何 DLL 中 /DEPENDENTLOADFLAG 选项设置的值,请使用 DUMPBIN 命令和 /LOADCONFIG 选项。

Visual Studio 2017 中的 /DEPENDENTLOADFLAG 选项是新增选项。 它仅适用于在 Windows 10 RS1 及更高版本的 Windows 上运行的应用。 其他运行此应用的操作系统会忽略此选项。

在 Visual Studio 开发环境中设置 DEPENDENTLOADFLAG 链接器选项

  1. 打开项目的“属性页” 对话框。 有关详细信息,请参阅在 Visual Studio 中设置 C++ 编译器和生成属性

  2. 选择“配置属性”>“链接器”>“命令行”属性页 。

  3. 在“附加选项”中输入选项。

以编程方式设置此链接器选项

另请参阅