Я подозреваю, что это смещение к новому PE-заголовку, первые 30 нечетных байтов - это заголовок MS-DOS, который смещается в файл, в котором находится 'A8', соответствует полю в структуре _IMAGE_DOS_HEADER
, называемой LONG e_lfanew; // File address of new exe header
;
Именно это значение 'A8' будет частью нового IMAGE_NT_HEADER
, который содержит эту информацию
- DWORD Подпись;
- _IMAGE_FILE_HEADER FileHeader;
- _IMAGE_OPTIONAL_HEADER OptionalHeader;
Первые два байта являются исходным заголовком MS-DOS в исполняемом файле, как показано этой константой: WORD IMAGE_DOS_SIGNATURE = 0x5A4D; // MZ
; IMAGE_NT_HEADER имеет эту подпись, чтобы определить, что это исполняемый файл для платформ NT DWORD IMAGE_NT_SIGNATURE = 0x00004550; // PE00
;
Вы найдете всю эту информацию в заголовочном файле с именем pe.h
.
То, что произошло, вы уничтожили значение 'A8', загрузчик не смог найти IMAGE_NT_HEADER
и, следовательно, не смог.