Как определить, включен ли компилятор / 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)
  • 10-й элемент VirtualAddress записи является RVA для «Загрузить каталог конфигурации».
    • IMAGE_NT_HEADERS.OptionalHeader.DataDirectory [IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG] .VirtualAddress

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

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

3

Другие решения


По вопросам рекламы [email protected]