首页
社区
课程
招聘
如何统计子程序的调用次数?
发表于: 2008-11-28 21:04 4092

如何统计子程序的调用次数?

2008-11-28 21:04
4092
int add(int a,int b)
{
    return a+b;
}

int sub(int a,int b)
{
    return a-b;
}

int main()
{
    add(3,4);
    return 0;
}比如上面的程序,要想统计子程序add(),sub()被使用了多少次?应该怎么实现呢?
我想首先,应该识别这些子程序 add(),sub(),就像utraledit软件把识别的子程序在右侧显示
其次才是对主程序的流程进行分析,但是还不知道具体应该怎么操作,希望大家谈谈自己想法!
对于第一步:本来想通过函数定义体有 一对大阔号来识别子程序,但是想想程序中的循环、分支结构等也常常有这样的括号

对于第二步:可以通过第一步得到的子程序名进行匹配查询,不过这个效率好像有待改善!

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
2
你说的是动态统计还是静态分析?

静态分析,编译器就在做这个,而且很多重要的优化都依赖于这个功能,比如函数内联优化等。

由程序代码生成一棵解析树,main()函数为根,树的结构就是函数的调用结构。
2008-11-28 21:11
0
雪    币: 214
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
可參考
Reverse Engineering with IDA Pro
2008-11-28 21:29
0
雪    币: 315
活跃值: (23)
能力值: ( LV9,RANK:220 )
在线值:
发帖
回帖
粉丝
4
通过call 后面的偏移差,计算出子程序的内存地址。然后通过此特征,从入口点开始匹配子程序来记录次数。
2008-11-28 22:44
0
雪    币: 167
活跃值: (1574)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
5
OD 的右键分析一下就出来了 看消息窗口 ~~
2008-11-28 22:51
0
游客
登录 | 注册 方可回帖
返回
//