foo_0(...,_ v0,...)
foo_1(...,_ v1,...)
...
而且,对于每对
(foo_x, _ v_x)
,我想将声明中的v_x
的类型更改为ANIMAL *
,其中ANIMAL
是本地类型。 我从这个问题中回收了一些代码,如下所示:
找不到轻松创建/修改的方法。
我最后的选择是使用
funcdata[i].type
/ tinfo_t
并在GuessType
之前修改字符串,但这可能有点复杂,因为某些参数是函数本身的指针。建议将是最欢迎的!#1 楼
这对我有用(可能需要对guess_tinfo
和get_func_details
进行检查)tif = idaapi.tinfo_t()
ida_typeinf.guess_tinfo(ea,tif)
funcdata = idaapi.func_type_data_t()
tif.get_func_details(funcdata)
tif2 = idaapi.tinfo_t()
tif2.get_named_type(idaapi.get_idati(),"ANIMAL") #tif2 = ANIMAL
tif3 = tinfo_t()
tif3.create_ptr(tif2) #tif3 = ANIMAL *
funcdata[argnum].type = tif3 #replace corresponding argument
function_tinfo = idaapi.tinfo_t()
function_tinfo.create_func(funcdata)
idaapi.apply_tinfo2(ea, function_tinfo, idaapi.TINFO_DEFINITE)