/DEPENDENTLOADFLAG (definir padrão de sinalizadores de carregamento dependente)

A opção /DEPENDENTLOADFLAG requer o Visual Studio 2017 ou posterior.

Define os sinalizadores de carga padrão usados quando o sistema operacional resolve as importações estaticamente vinculadas de um módulo.

Sintaxe

/DEPENDENTLOADFLAG[:load_flags]

Argumentos

load_flags
Um valor inteiro opcional que especifica os sinalizadores de carga a serem aplicados ao resolver dependências de importação estaticamente vinculadas do módulo. O valor padrão é 0. Para obter uma lista de valores de sinalizador com suporte, confira as entradas LOAD_LIBRARY_SEARCH_* em LoadLibraryEx.

Comentários

Quando o sistema operacional resolve as importações estaticamente vinculadas de um módulo, ele usa a ordem de pesquisa padrão. Use a opção /DEPENDENTLOADFLAG para especificar um valor load_flags que altera o caminho de pesquisa usado para resolver essas importações. Em sistemas operacionais com suporte, ela altera a ordem de pesquisa da resolução da importação estática, semelhante ao que o LoadLibraryEx faz ao usar parâmetros LOAD_LIBRARY_SEARCH. Para obter informações sobre a ordem de pesquisa definida por load_flags, confira Ordem de pesquisa usando sinalizadores LOAD_LIBRARY_SEARCH.

Esse sinalizador pode ser usado para dificultar um vetor de ataque de plantação de DLL. Por exemplo, considere um aplicativo que vinculou estaticamente uma DLL:

  • Um invasor pode plantar uma DLL com o mesmo nome anteriormente no caminho de pesquisa da resolução de importação, como o diretório do aplicativo. Diretórios protegidos são mais difíceis, mas não impossíveis, para um invasor mudar.

  • Se a DLL estiver ausente do aplicativo, nos diretórios %windows%\system32 e %windows%, a resolução de importação será feita no diretório atual. Um invasor pode plantar uma DLL aí.

Em ambos os casos, se você especificar a opção de link /DEPENDENTLOADFLAG:0x800 (o valor do sinalizador LOAD_LIBRARY_SEARCH_SYSTEM32), o caminho de pesquisa do módulo será limitado ao diretório %windows%\system32. Isso oferece alguma proteção contra ataques de plantação em outros diretórios. Para obter mais informações, confira Segurança das bibliotecas de vínculo dinâmico.

Para ver o valor definido pela opção /DEPENDENTLOADFLAG em qualquer DLL, use o comando DUMPBIN com a opção /LOADCONFIG.

A opção /DEPENDENTLOADFLAG é nova no Visual Studio 2017. Ela se aplica somente a aplicativos em execução no Windows 10 RS1 e versões posteriores do Windows. Essa opção é ignorada por outros sistemas operacionais que executam o aplicativo.

Para definir a opção do vinculador DEPENDENTLOADFLAG no ambiente de desenvolvimento do Visual Studio

  1. Abra a caixa de diálogo Páginas de Propriedades do projeto. Para obter detalhes, confira Definir as propriedades de build e do compilador do C++ no Visual Studio.

  2. Selecione a página de propriedades Propriedades da Configuração>Vinculador>Linha de Comando.

  3. Insira a opção em Opções Adicionais.

Para definir esta opção do vinculador por meio de programação

Confira também