Как определить, включен ли компилятор /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.