我目前正在用 C++ 编写一些测试代码,这些代码会混淆 PE 文件以了解其文件格式结构。我的项目设置为编译为 64 位。在我的代码中,我打开 %SystemRoot%\system32\calc.exe 并读取 IMAGE_DOS_HEADER 和 IMAGE_NT_HEADERS 结构。同时,我在 Notepad++ 中使用十六进制编辑器插件打开了相同的 calc.exe。我将代码读取的值与 Notepad++ 进行了比较,发现它们不同。我将 calc.exe 从 System32 复制到 C:\Temp\calc.exe,现在值匹配。
Notepad++ 似乎是一个 32 位应用程序(尚未检查 PE 文件,但由于它默认安装到 Program Files (x86),因此这似乎是一个安全的假设)。
这是 WinSxS 在工作吗?或者还有什么原因造成的?哪个文件实际上被提供给打开 %SystemRoot%\system32\calc.exe 的 32 位应用程序?
只是好奇。提前感谢您对此有所了解。