В настоящее время я пишу некоторый тестовый код на C ++, который смешивается с PE-файлами, чтобы понять его структуру формата файла. Мой проект настроен на компиляцию до 64 бит. В моем коде я открываю% SystemRoot% \ system32 \ calc.exe и читаю структуры IMAGE_DOS_HEADER и IMAGE_NT_HEADERS. В то же время у меня есть тот же calc.exe, открытый в Notepad ++ с помощью плагина hex hex editor. Я сравнил значения, которые мой код читает с помощью Notepad ++, и заметил, что они разные. Я скопировал calc.exe из System32 в C: \ Temp \ calc.exe, и теперь значения совпадают.
Notepad ++ представляется 32-битным приложением (не проверял PE-файл, но, поскольку он по умолчанию установлен в Program Files (x86), это безопасное предположение).
Это WinSxS на работе? Или что еще вызывает это? И какой файл фактически подается в 32-разрядные приложения, открывающие% SystemRoot% \ system32 \ calc.exe?
Просто любопытно. Заранее спасибо за любой свет пролить на это.