Как определить, включен ли компилятор /GS для PE Win32?

Я могу проанализировать ASLR, DEP, SEH и т. Д. Из заголовков DOS, но не знаю, как определить, был ли файл скомпилирован с канареек стека /GS.

Я пишу программу, поэтому указание на такую ​​программу, как PEStudio, мне не поможет, если у нее нет открытого кода.

Это часть заголовков душ? Или я должен сканировать раздел.data для __security_cookie?

1 ответ

Решение
  • Перейти к IMAGE_NT_HEADERS
  • Затем IMAGE_OPTIONAL_HEADER (IMAGE_NT_HEADERS.OptionalHeader)
  • Затем IMAGE_DATA_DIRECTORY (IMAGE_NT_HEADERS.OptionalHeader.DataDirectory)
  • Десятый элемент VirtualAddress записи является RVA для "Загрузить каталог конфигурации".
    • IMAGE_NT_HEADERS.OptionalHeader.DataDirectory [IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG].VirtualAddress

Каталог конфигурации загрузки представляет собой структуру IMAGE_LOAD_CONFIG_DIRECTORY.

Проверьте элемент SecurityCookie: если это не 0, то /GS используется для этого PE.

Другие вопросы по тегам