可以通过检查是否填充了IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR(即,其VirtualAddress和Size不为零)来标识. NET程序集。该条目的名称容易混淆,但它是用于. NET元数据的名称;参见Names of PE directories。 如果你需要程序集所需的框架版本,那么你必须自己解析元数据结构,pefile似乎不支持。如果你能做到这一点,那么根据http://www.ntcore.com/files/dotnetformat.htm,你会在那里找到名为MajorRuntimeVersion和MinorRuntimeVersion的字段,尽管我不确定应该如何解释它们。
3条答案
按热度按时间zc0qhyus1#
可以通过检查是否填充了IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR(即,其VirtualAddress和Size不为零)来标识. NET程序集。该条目的名称容易混淆,但它是用于. NET元数据的名称;参见Names of PE directories。
如果你需要程序集所需的框架版本,那么你必须自己解析元数据结构,pefile似乎不支持。如果你能做到这一点,那么根据http://www.ntcore.com/files/dotnetformat.htm,你会在那里找到名为MajorRuntimeVersion和MinorRuntimeVersion的字段,尽管我不确定应该如何解释它们。
nhhxz33t2#
最终代码为:
mccptt673#
我不认为检查.NET大小是一个很好的方法,例如,Mono不关心.NET大小-它可以是零。
我想检查虚拟地址就足够了。