【发布时间】:2012-02-14 09:53:01
【问题描述】:
“Any CPU”是如何在底层实现的?
不是有两种格式:PE32 和 PE64 吗? Windows x86 和 x64 都可以运行 32 位。但是,它不是通过在 32 位内部有一个 64 位可执行文件并在内存中运行它来实现的,因为这样该进程将具有与启动器不同的 ID。那么他们是怎么做到的呢?
【问题讨论】:
标签: .net winapi assemblies reverse-engineering
“Any CPU”是如何在底层实现的?
不是有两种格式:PE32 和 PE64 吗? Windows x86 和 x64 都可以运行 32 位。但是,它不是通过在 32 位内部有一个 64 位可执行文件并在内存中运行它来实现的,因为这样该进程将具有与启动器不同的 ID。那么他们是怎么做到的呢?
【问题讨论】:
标签: .net winapi assemblies reverse-engineering
在他的argument against Any CPU 中,Rick Byers 还包含了一些与此问题相关的背景信息:
由于我们希望人们能够编写可以在 32 位和 64 位进程中重复使用的 .NET 库,我们与 Windows 合作扩展了对操作系统加载程序的支持,以实现架构中立("AnyCPU") PE 文件。
查看上面的链接了解更多详细信息。
【讨论】:
PE32 针对 .NET 进行了扩展。平台标志只指定了可执行文件的运行位置,并且可以使用CorFlags.exe 进行更改。这篇文章对the .NET File Format有很好的描述。
【讨论】: