1

我是否可以使用 Mono.Cecil 找到 .NET 程序集是专门为 32 位还是 64 位构建的?或任何其他无需先加载程序集的查找方式。

4

2 回答 2

2

使用 mono-ceci,您可以执行此操作(信息可按模块获取):

AssemblyDefinition asm = AssemblyFactory.GetAssembly("myassembly.dll");

foreach (ModuleDefinition module in asm.Modules)
{
    Console.WriteLine("Module " + module.Name);
    Console.WriteLine("IsPE64 " + module.Image.PEOptionalHeader.StandardFields.IsPE64);
}
于 2013-03-20T15:21:47.750 回答
2

moduleDefinition.Architecture是类型的TargetArchitecture女巫定义为:

public enum TargetArchitecture {
    I386,
    AMD64,
    IA64,
    ARMv7,
}

还有另一个属性,moduleDefinition.Attributes类型为ModuleAttributes

[Flags]
public enum ModuleAttributes {
    ILOnly = 1,
    Required32Bit = 2,
    StrongNameSigned = 8,
    Preferred32Bit = 0x00020000,
}
于 2018-07-17T09:51:49.057 回答