能力值:
( LV2,RANK:10 )
|
-
-
2 楼
请参考《ida pro 权威指南》!
|
能力值:
( LV7,RANK:100 )
|
-
-
3 楼
试了蛮多种方式了,也没给弄出来
实在没找到相关的api
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
就是要获取定义在数据段中有关参数的信息
也就是
的这句话
,用了反汇编这个地址的方法也不行,只能求助于各位大虾了。。。。
或者用别的方法也行,只要能获取API参数个数就行。。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
那本书我也看了,没找到合适的方法啊,你有什么好的方法没有,谢谢啦。。
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
我又补充了,你看看这回有合适的方法么,谢谢啦。。
|
能力值:
( LV7,RANK:100 )
|
-
-
7 楼
我明白你的意思,可是中午翻了两个小时,也试了不少api,都没能得到这一块的数据~~我也郁闷了
|
能力值:
( LV9,RANK:200 )
|
-
-
8 楼
if ( get_ti(ea, type, sizeof(type), fnames, sizeof(fnames))
&& print_type_to_one_line(
decl, sizeof(decl),
idati,
type,
true_name,
NULL,
fnames) == T_NORMAL )
{
// found type info -- calc the args size
ulong arglocs[MAX_FUNC_ARGS];
type_t *types[MAX_FUNC_ARGS];
char *names[MAX_FUNC_ARGS];
int a = build_funcarg_arrays(type, fnames, arglocs, types, names, MAX_FUNC_ARGS, false);
if ( a != 0 )
{
for ( int k=0; k < a; k++ )
{
const type_t *ptr = types[k];
int s1 = get_type_size(idati, ptr);
s1 = qmax(s1, inf.cc.size_i);
argsize += s1;
}
free_funcarg_arrays(types, names, a);
}
}
else if ( get_long_name(BADADDR, ea, decl, sizeof(decl)) != NULL
&& get_true_name(BADADDR, ea, true_name, sizeof(true_name)) != NULL
&& strcmp(decl, true_name) != 0 )
{
// found mangled name
}
else
{
// found nothing, just show the name
qstrncpy(decl, get_name(BADADDR, ea, true_name, sizeof(true_name)), sizeof(decl));
}
if ( argsize == 0 )
{
func_t *pfn = get_func(ea);
if ( pfn != NULL )
argsize = pfn->argsize;
}
copy自 ida5sdk\plugins\funclist\funclist.cpp
|
能力值:
( LV7,RANK:100 )
|
-
-
9 楼
谢谢"疯子"指点:)已测试
中午可是把sdk翻来翻去的,试了不少api,从界面的操作上按"Y"键也知道了是type类型,不过怎么也没找到get_ti以及print_type_to_one_line,看来sdk里面的插件源码还是非常值得学习的..之前忽视了
谢谢:)
|
|
|