码迷,mamicode.com
首页 > 其他好文 > 详细

使用pintools采集函数信息

时间:2014-10-03 04:11:33      阅读:278      评论:0      收藏:0      [点我收藏+]

标签:blog   http   使用   ar   文件   div   2014   c   on   

pintool是intel推出的一个动态插桩工具。

pin tool常用的有RTN接口(routine,我的理解就是程序上下文,比如汇编子程序,c/cpp函数之类),INS接口(指令级接口),Image(二进制文件镜像,lib或者exe)

我采用RTN模式捕获函数信息。

PIN初始化流程如下:

bubuko.com,布布扣

在rtnfunc中插入在上下调用前和调用后的回调函数:

bubuko.com,布布扣

btw:**IARG_FUNCARG_CALLSITE_VALUE, **这段比较诡异,同样的代码还存在于回调函数中,

bubuko.com,布布扣

这样的代码实际上是不可执行的:),使用“**”,“&&”以及"$$"符号包括的代码被我用于作为生成代码的模板。

这是因为实际定义的函数参数个数是不一致的,这导致回调函数的参数会有不同,为了避免重复的编码这块可以使用codegen生成。

脚本如下:

bubuko.com,布布扣

执行nm指令获取符号表,并解析出函数定义。分析函数参数个数:

bubuko.com,布布扣

之后依据函数参数个数生成pin tools代码:

bubuko.com,布布扣

最后生成的代码如下:

bubuko.com,布布扣

嗯,看起来是对的,不过缩进比较丑,如果是python就悲剧了:)

执行下,结果如下:

bubuko.com,布布扣

bubuko.com,布布扣

使用pintools采集函数信息

标签:blog   http   使用   ar   文件   div   2014   c   on   

原文地址:http://www.cnblogs.com/qianqians/p/4004684.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!