Я пытаюсь прочитать PE-заголовки некоторых процессов в среде Windows 64, и так как мой код работает, просто читая структуру IMAGE_NT_HEADERS для 32- и 64-битных исполняемых файлов, мне стало интересно: нужно ли мне писать что-то вроде
if executable is 64 bit
use IMAGE_NT_HEADERS64
else
use IMAGE_NT_HEADERS
? Кажется, мой код работает, просто используя IMAGE_NT_HEADERS для 64- и 32-битных процессов, я что-то упустил?
Очевидно, что разница в некоторых полях OptionalHeader. Например, ImageBase 64-битной версии имеет 64-битный размер. Если ваш код не использует поля после ImageBase
(в том числе) — ваш код пройдет тесты.
Других решений пока нет …