pin ——pin tool代码注释 各pin tool的用途

这篇博客介绍了Pin工具中的一些工具,如inscount0和inscount用于记录指令执行次数,itrace跟踪指令地址,pinatrace记录内存访问,imageload在动态库加载或卸载时提供信息,proccount统计routine数量和执行次数,safecopy关注内存到寄存器的数据复制,而malloctrace则追踪malloc和free操作。文章以malloctrace为例,解析了Pin工具代码的结构,包括输出文件建立、程序检测和结束部分,并强调了RTN_InsertCall函数在插入自定义行为中的作用。
摘要由CSDN通过智能技术生成

pin tool 各个工具分类及作用:

 insount0                        记录指令执行的次数

 inscount                        记录指令执行的次数,与inscount0不同的是,它分BBL块记录然后累加

 itrace                              记录每个指令地址

pinatrace                        记录指令读取和写入的内存地址

imageload                      image载入或卸载时打印一条信息,image指与程序有关的所有数据结构(windows下是dll、exe)

proccount                       记录routine的数目和一个routine中指令执行的次数

safecopy                         记录程序从内存中复制信息到寄存器的指令

invocation                       说明和程序都有点暧昧,暂时没看懂

malloctrace                    输出malloc()和free()的输入参数以及malloc()的返回值

下面以malloctrace工具为例对pintool代码进行说明:

    前面已经说过,了解pintool的自定义函数是看懂其代码的关键,pintool的主函数可分为三个部分,输出文件建立部分、程序检测函数部分和结尾部分(忽略最后一句)。

输出文件建立部分确定输出文件的格式和说明内容,程序检测函数部分调用各函数对可执行程序进行检测,结尾部分一般为其自定义的Fini函数,用来做将检测数据写入输出文件、关闭文件等的收尾工作。

    显然,第二部分是最重要的一部分,从前面声明的函数可知,

IMG_AddInstrumentFunction函数调用Image函数,Image函数的参数为要监测的image,若image中含有malloc函数,则RTN_InsertCall函数一次调用Arg1Bfore和MallocAfter函数,这两个函数实现我们所要的输出,注意前面定义的写入文件的函数,这里是我们想要的输出,InsertCall函数调用这些写入函数,了解这些规律就很容易看懂这些代码。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值