2014-10-09 4 views
1

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

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

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

+0

C или C++? Кроме того, DOS или окна? Во всяком случае, нужно ли ОС знать об этой детали? – Deduplicator

+2

В отличие от ASLR, DEP, SEH и т. Д., GS не требует вмешательства операционной системы. Он полностью обрабатывается в приложении. Следовательно, нет необходимости в бит PE, чтобы указать, активен ли/GS. (Это хорошо, потому что могут быть некоторые файлы, скомпилированные с/GS, а некоторые без них.) –

+0

Я так много вычислил, так же анализируется раздел .data, как идти? Может быть беспорядочно. Есть ли другие подписи, оставленные/GS? – Harry

ответ

3
  • Перейти к 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.

Смежные вопросы