作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试编写一个简单的 python 脚本;最好使用可以告诉我 exe 或 dll 文件是否编译为 .NET 的 pefile。我知道我可以查找字符串“BSJB”来查看该程序是否是用 .NET 编写的,但我正在尝试以比使用 grep 和字符串更 pythonic 的方式来执行此操作。运行 pefile.PE('my.exe').dump_info() 给了我一些很好的信息,但还不足以确定它实际上是 dot Net 还是什么版本的 dot Net。
谢谢!
最佳答案
您可以通过检查 IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR 是否已填写(即其 VirtualAddress 和 Size 不为零)来识别 .NET 程序集。该条目的名称令人困惑,但它是用于 .NET 元数据的名称;见Names of PE directories .
如果你需要程序集所需的框架版本,那么你将不得不自己解析元数据结构,pefile 似乎不支持。如果你能做到这一点,那么根据 http://www.ntcore.com/files/dotnetformat.htm您会在那里找到名为 MajorRuntimeVersion 和 MinorRuntimeVersion 的字段,尽管我不确定应该如何解释这些字段。
关于python - 有没有办法用 python pefile 检查 exe 是否是 dot NET?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45574925/
我是一名优秀的程序员,十分优秀!