zoukankan      html  css  js  c++  java
  • 使用pintools采集函数信息

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

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

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

    PIN初始化流程如下:

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

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

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

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

    脚本如下:

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

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

    最后生成的代码如下:

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

    执行下,结果如下:

  • 相关阅读:
    LeetCode Single Number
    Leetcode Populating Next Right Pointers in Each Node
    LeetCode Permutations
    Leetcode Sum Root to Leaf Numbers
    LeetCode Candy
    LeetCode Sort List
    LeetCode Remove Duplicates from Sorted List II
    LeetCode Remove Duplicates from Sorted List
    spring MVC HandlerInterceptorAdapter
    yum
  • 原文地址:https://www.cnblogs.com/qianqians/p/4004684.html
Copyright © 2011-2022 走看看