“任何CPU”是如何实现的?

时间:2012-01-19 18:13:08

标签: .net winapi assemblies reverse-engineering

如何在低级别实施'任何CPU'?

是不是有两种格式:PE32和PE64? Windows x86和x64都可以运行32位。但是,它并不是通过在32位内部使用64位可执行文件并在内存中运行它来实现的,因为这个过程将具有与启动器不同的ID。那他们是怎么做到的?

2 个答案:

答案 0 :(得分:7)

在他的argument against Any CPU中,Rick Byers还包含一些与此问题相关的背景信息:

  

由于我们希望人们能够编写可以从32位和64位进程重用的.NET库,我们使用Windows来扩展OS加载程序支持以启用体系结构中立(“AnyCPU”)PE文件。

查看上面的链接以获取更多详细信息。

答案 1 :(得分:1)

PE32扩展了.NET。 platform标志只指定可执行文件的运行位置,可以使用CorFlags.exe进行更改。本文对the .NET File Format有很好的描述。