写插桩程序简单概括为两个问题:(1)在何处插入什么方法;(2)在插入点执行的方法(Analysis function)
PinTools的插桩粒度可以分为:image(我认为可以理解为输入文件),section(类似于基本块,但PinTools中定义的基本块与平常我们所说的基本块不太一样,不过目前这个不同没有影响到我写程序),routines(函数或方法,function),instruction(语句)
示例(以Linux为例)
到source/tools/ManualExamples目录下执行make可将文件夹内代码文件编译为.so文件,之后按照下述规则键入命令
pin [pin-option]… -t [toolname] [tool-options]… – [application] [application-option]…
以PinTools自带的数语句数目的instrument0.so为例
$ cd source/tools/ManualExamples
$ …/…/…/pin -t obj-ia32/inscount0.so – /bin/ls
需要注意的是–后一定要空一格再跟[application],否则会报Missing target applicaton的错误