isStruct(getFlags(ea))
返回True
)在数据库中的给定地址处定义时,发现了一个有趣的问题。仔细阅读idc.py
并没有多大帮助。在“结构”窗口中定义
struct
。为其分配了一个
struct
ID,因此可以从IDC进行访问。 / Python脚本。现在,在例如以下的某处定义一个
struct
变量.data
部分。一个可靠的例子:
# Some Python code
strid = idaapi.get_struc_id('_s__RTTIClassHierarchyDescriptor')
size = idaapi.get_struc_size(strid)
idaapi.doStruct(ea, size, strid)
如何知道
ea
,如何得到strid
的值? #1 楼
这对我有用:评论
确认工作。可能是因为IDA将结构变量视为某些“指令”的“操作数”。
–德米特里·雅努什凯维奇(Dmitry Janushkevich)
2014年7月2日在18:03
抱歉,悬赏活动有1天的超时时间。 :-(
–德米特里·雅努什凯维奇(Dmitry Janushkevich)
2014年7月2日在18:03
赏金似乎仍然开放。 imgur.com/d0NYZSq.jpg
–扎克·里格(Zach Riggle)
2014年7月2日在19:04
似乎无法在奖励开始后的24小时内授予奖励。 :-(将尽快这样做。
–德米特里·雅努什凯维奇(Dmitry Janushkevich)
2014年7月3日在7:33
我们去了,获奖! :-)
–德米特里·雅努什凯维奇(Dmitry Janushkevich)
2014年7月3日13:35
#2 楼
在IDC中,以下工作有效,所以我不确定是否可以从Python使用相同的函数auto type;
auto ea;
ea = 0x8F84C37C;
Message("isStruct: %d\n", isStruct(GetFlags(ea)));
type = GetTinfo(ea);
Message("firstattr: %s\n", firstattr(type));
Message("getattr: %d\n", getattr(type,"typid"));
输出:
isStruct: 1
firstattr: typid
getattr: 52541
评论
即使从idc.py使用IDC适配器函子,在Python中似乎对我也不起作用。公平地说,将您的代码段复制到IDC脚本中并执行它确实可行。 :-) Python>打印idc.isStruct(idc.GetFlags(0x561114))True Python>打印idc.GetTinfo(0x561114)无Python>打印idc.GetType(0x561114)无中断评论,但您可能对返回的内容有所了解。
–德米特里·雅努什凯维奇(Dmitry Janushkevich)
2014年6月26日7:15
似乎GetTinfo的Python IDC包装器获得了不同的结果,这似乎是行不通的。
– Simeon朝圣者
14年6月26日在7:23
idc.GetTinfo似乎只是在调用idaapi.idc_get_type_raw(ea),但是很奇怪它失败了。查看swig / typeinf.i idc_get_type_raw似乎会调用get_tinfo,所以我希望它能正常工作。
– Simeon朝圣者
14年6月26日在8:01
奇怪的是:Python> tif = idaapi.tinfo_t()Python> print tif
–德米特里·雅努什凯维奇(Dmitry Janushkevich)
14年6月26日在8:31
评论
你的问题是什么 ?您发现什么问题了?我没什么问题吗?!?
更新了问题。