• Pin API INS


    函数


    PIN_CALLBACK LEVEL_PINCLIENT::INS_AddinstrumentFucntion(INS_INSTRUMENT_CALLBACK fun, VOID *val)
    VOID LEVEL_PINCLIENT::INS_InsertPredictedCall(INS ins, IPOINT ipoint, AFUNPTR funptr, ...)
    VOID LEVEL_PINCLIENT::INS_InsertCall(INS ins, IPOINT action, AFUNPTR funptr, ...)
    VOID LEVEL_PINCLIENT::INS_InsertIfCall(INS ins, IPOINT action, AFUNPTR funptr, ...)
    VOID LEVEL_PINCLIENT::INS_InsertThenCall(INS ins, IPOINT action, AFUNCPTR funptr, ...)
    VOID LEVEL_PINCLIENT::INS_InsertIfPredicatedCall(INS ins, IPOINT action, AFUNCPTR funptr, ...)
    VOID LEVEL_PINCLIENT::INS_InsertThenPredicatedCall(INS ins, IPOINT action, AFUNCPTR funptr, ...)
    VOID LEVEL_PINCLIENT::INS_InsertFillBuffer(INS ins, IPOINT action, BUFFER_ID, ...)
    VOID LEVEL_PINCLIENT::INS_InsertFillBufferPredicated(INS ins, IPOINT action, BUFFER_ID id, ...)
    VOID LEVEL_PINCLIENT::INS_InsertFillBufferThen(INS ins, IPOINT action, BUFFER_ID id, ...)

    详细描述

    使用这些函数插桩指令


    函数文档

    PIN_CALLBACK LEVEL_PINCLIENT::INS_AddInstrumentFunction( INS_INSTRUMENT_CALLBACK fun, VOID *val )
    // 添加一个在指令粒度上的函数

    参数值:
      fun 插桩使用的函数
      val 插桩函数 fun 的参数
    返回值:
      PIN_CALLBACK 回调的句柄,可用于进一步修改此回调的属性
    注:
      在调用这个API 的时候会获得Pin客户端锁
    可用性:
      Mode:JIT
      O/S: Linux,Windows,& macOS*
      CPU: ALL
    VOID LEVEL_PINCLIENT::INS_InsertCall( INS ins, IPOINT action, AFUNPTR funptr, ...)
    // 插入相对于指令ins的funptr调用

    参数值:
      ins 被插桩的指令
      action 指定插桩位置,之前,之后等
       IPOINT_BEFORE 对所有指令始终有效
       IPOINT_AFTER 当fall-through存在时有效,仅当INS_IsValidForIpointAfter(ins)为true的时候可用
       IPOINT_TAKEN_BRANCH 对于非分支无效,仅当INS_Is_ValidForIpointTakenBranch为true时可用
      funptr 插入一个funptr的调用
      ... funptr的参数列表,以IARG_END结尾,查看IARG_TYPE了解细节
    注:
      如果对于同一个指令插入了多个调用,顺序由IARG_CALL_ORDER决定,更多细节,查看CALL_ORDER
    可用性:
      Mode:JIT
      O/S: Linux,Windows,& macOS*
      CPU: ALL
    VOID LEVEL_PINCLIENT::INS_InsertFillBuffer( INS ins, IPOINT action, BUFFER_ID id, ...)
    // 每当程序指令执行时,插入分析代码(即自定义代码)以在跟踪缓冲区中填充一条记录

    参数值:
      [in] ins 应用指令
      [in] action 指明记录是插桩在指令之前还是之后
      [in] id 被填充缓冲区ID
      [in] ... IARG_TYPE. 用于指定跟踪缓冲区字段的其他参数,这些附加参数的格式为:IARG_TYPE arg, [可选IARG参数],size_t offset,...,IARG_END 其中arg 参数指定要写入跟踪记录字段的值,offset指定跟踪记录开始位置到当前字段的偏移量,如果arg需要其他参数,放置在offset之前
    可用性:
      Mode:JIT
      O/S: Linux,Windows,& macOS*
      CPU: ALL
    VOID LEVEL_PINCLIENT::INS_InsertFillBufferPredicated( INS ins, IPOINT action, BUFFER_ID id, ...)
    // 插入分析代码,以便在应用程序指令执行是,根据该指令的谓语在跟踪缓冲区中填充一条记录

    参数值:
      [in] ins 应用指令
      [in] action 记录是在指令之前填写还是之后填写
      [in] id 被填充缓冲区的ID
      [in] ... IARG_TYPE. 用于指定跟踪缓冲区的其他参数
    可用性:
      Mode:JIT
      O/S: Linux,Windows,& macOS*
      CPU: ALL
    VOID LEVEL_PINCLIENT::INS_InsertFillBufferThen( INS ins, IPOINT action, BUFFER_ID id, ...)
    // 每当应用指令执行时,插入分析代码以在跟踪缓冲区中填充一条记录。仅当 前面的“if”语句分析调用返回值非零时才插入记录。
    参数值:
      [in] ins 应用指令
      [in] action 记录是在指令之前填写还是之后填写
      [in] id 被填充缓冲区的ID
      [in] ... IARG_TYPE. 用于指定跟踪缓冲区的其他参数
    可用性:
      Mode:JIT
      O/S: Linux,Windows,& macOS*
      CPU: ALL
    VOID LEVEL_PINCLIENT::INS_InsertIfCall( INS ins, IPOINT action, AFUNPTR funptr, ...)
    // 插入相对于ins的funptr调用, 如果funptr返回一个非零ADDRINT,则执行紧接着的then分析调用。

    参数值:
      ins 被插桩指令
      action 指定插桩位置,之前,之后等
          IPOINT_BEFORE 对所有指令始终有效
          IPOINT_AFTER 当fall-through存在时有效,仅当INS_IsValidForIpointAfter(ins)为true的时候可用
          IPOINT_TAKEN_BRANCH 对于非分支无效,仅当INS_Is_ValidForIpointTakenBranch为true时可用
      funptr 插入一个funptr的调用,这个函数的返回值必须时ADDRINT类型
      ... 传递给funptr的从那书列表,以IARG_END结尾,查看IARG_TYPE了解更多
    注:
      如果为同一个指令插入多个调用,则顺序有IARG_CALL_ORDER决定,有关详细信息清参阅CALL_ORDER。 注意,如果使用CALL_ORDER,“if”和“then”分析调用必须具有相同的顺序。
    可用性:
      Mode:JIT
      O/S: Linux,Windows,& macOS*
      CPU: ALL
  • 相关阅读:
    InnoDB和MyISAM区别总结
    jquery判断checkbox是否被选中
    手机网站重构经验分享(S60V3篇)
    域名A记录、MX记录、CNAME、TTL
    ubuntu apache2配置详解(含虚拟主机配置方法)
    IP分片攻击
    Linux+Apache+Mysql+PHP典型配置
    apache配置优化测试
    PHP 正则表达式资料
    人人网UGC技术广播站
  • 原文地址:https://www.cnblogs.com/PPWEI/p/11834710.html
Copyright © 2020-2023  润新知