在
idaapi.py
中,有一个函数def set_processor_type(*args)
,但没有等效的函数,例如get_processor_type
。 python ELF解析器。我也不喜欢解析IDA程序集列表开头显示的字符串的想法。必须有一种方法使用
idc.py
,idaapi.py
或idautils.py
。#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中存在。
评论
很抱歉要恢复该旧线程,但是由于我无法弄清楚的原因,info.is_64bit()和info.is_32bit()都不适合我。我正在使用IDA C ++ SDK v7.1。即使数据库中的可执行文件是64位的,它仍然会通过32位检查。知道为什么会这样吗?如果您有新问题,请单击“提问”按钮提问。如果它有助于提供上下文,请包括指向该问题的链接。 -来自评论