我找不到API函数来获取已加载二进制文件的CPU体系结构。
idaapi.py中,有一个函数def set_processor_type(*args),但没有等效的函数,例如get_processor_type。 python ELF解析器。我也不喜欢解析IDA程序集列表开头显示的字符串的想法。

必须有一种方法使用idc.pyidaapi.pyidautils.py

评论

很抱歉要恢复该旧线程,但是由于我无法弄清楚的原因,info.is_64bit()和info.is_32bit()都不适合我。我正在使用IDA C ++ SDK v7.1。即使数据库中的可执行文件是64位的,它仍然会通过32位检查。知道为什么会这样吗?

如果您有新问题,请单击“提问”按钮提问。如果它有助于提供上下文,请包括指向该问题的链接。 -来自评论

#1 楼

您可以从idainfo的结构体中获得处理器的名称:
字节序可以通过处理器名称来确定。例如,mipsr是大字节序,而mipsrl是小字节序。

编辑:
添加了适当的字节序检查(mf == MSB优先)。基于此答案。

编辑:
自IDA7 beta 3(170724)起,idainfo.mf被删除,必须使用idainfo.is_be()。基于密钥补丁

#2 楼

并非所有处理器名称都具有字节序信息。通常可以将其确定为:

BIG_ENDIAN if _idaapi.cvar.inf.mf else LITTLE_ENDIAN


#3 楼

这绝对不是确切答案,但是您可能可以使用

idaapi.ph_get_regnames() 



返回处理器模块中定义的寄存器名称列表。 >

不同的平台具有不同的寄存器集,并且如果您找不到关于确切cpu的解决方案,可以尝试一下。
此功能在IDA 6.8中存在。