函数


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

Pin API INS相关推荐

  1. 江山易改本性难移之ZYNQ SDK API函数笔记(GPIO函数)

    初学Xilinx ZYNQ SDK的开发,下面记录使用到的API函数及自己的理解.若有误,还请指教. xgpiops函数 常用编程步骤: 1.查找输入设备的ID查找设备: 2.初始化GPIO(最新版本 ...

  2. RT-Thread Pin设备驱动API应用介绍

    概要 本文主要涉及Pin驱动相关的API接口的简要介绍及使用示例,有兴趣深入了解Pin驱动程序框架可参考:RT-Thread pin设备驱动代码结构剖析 PIN设备的操作方法 应用程序通过RT-Thr ...

  3. linux那些事之pin memory相关API

    内核中为pin memory 用户空间申请物理内存除了get_user_pages() API函数之外,还有其他相关一系列函数,主要位于mm\gup.c 主要都是针对get_user_pages进行的 ...

  4. 调用ins api获取个人照片信息

    最近想要把ins获取到的个人照片信息放到博客中去,没想到ins的api还有一点坑,记录一下. 注册client 为了获取个人信息,我们首先就是要获取token,获取token之前,需要先注册一个cli ...

  5. 利用Pin分析程序的动态行为特征

    在程序设计和优化过程中,我们通常希望能有工具帮助我们分析热点代码.覆盖率.内存泄露等这些特性,对多线程程序还希望能分析并发性.竞争和死锁等等.但这些特征通常在静态编译时很难获取,而且往往只能在运行时才 ...

  6. intel Pin简要介绍及示例程序

    Intel PIN Intel PIN References 二进制动态插桩简介 源插桩与二进制插桩 静态插桩与动态插桩 常见的动态插桩工具 Intel Pin简介 Intel pin动态插桩框架 简 ...

  7. 京东API网关实践之路!

    源 /  京东零售技术    文 /  王丽 概述 1 背景 京东作为电商平台,近几年用户.业务持续增长,访问量持续上升,随着这些业务的发展,API网关应运而生. API网关,就是为了解放客户端与服务 ...

  8. 京东千万并发 API 网关实践之路!

    来源:京东零售技术(id:jd-sys) 链接:京东API网关实践之路 概述 1 背景 京东作为电商平台,近几年用户.业务持续增长,访问量持续上升,随着这些业务的发展,API网关应运而生. API网关 ...

  9. Android 设备管理API概览(Device Administration API)

    原文:http://android.eoe.cn/topic/android_sdk Android 2.2通过提供Android设备管理API的支持来引入企业应用支持.在系统级的设备管理API提供了 ...

最新文章

  1. 使用 Matplotlib 这么久,竟不知道数据可以动起来
  2. phalcon: 解决php7/phalcon3.2以上版本,不支持oracle数据库的方法
  3. cpu使用率 htop显示_Linux查看CPU和内存使用情况
  4. 转载:python3 安装pycrypto
  5. 收官礼 |《神策 2018 数据驱动大会回顾专刊》发布,你要的干货,已打包!
  6. 实用算法实现-第6篇 线段树
  7. [转载]Mac使用vim命令修改配置文件内容
  8. python把浮点数转换成16进制_Python将colorsys RGB坐标转换为十六进制
  9. python默认深拷贝_Python 深拷贝与浅拷贝
  10. 漫画:Java如何实现热更新?
  11. Ontology与OO作为一种需求分析或软件构建方法的存在意义
  12. 通过命令行获取计算机参数,Win32命令行参数的传到和获取
  13. python 协程和异步的关系_python 协程和异步I/O的实践
  14. Serial Port接收数据完整性要求
  15. 已解决:mysql: [Warning] Using a password on the command line interface can be insecure.
  16. Unity2020系列通用中文语言包
  17. 极限学习机Python的代码实现
  18. Off World Live 插件:广播UE4内部的音频信号到NDI
  19. 照着这本“书”,3年量产自动驾驶卡车
  20. 机器学习实例-决策树和随机森林预测员工离职率

热门文章

  1. qq,tim聊天的人太多,如何找到和自己聊过天的网友
  2. 深度学习与自然语言处理实验——中文信息熵的计算
  3. 百度推广——搜索营销新视角(百度官方出品,俞敏洪、吴晓波、徐雷力荐!)
  4. day81_babasport第七天
  5. SwissArmyKnife调试Android UI的工具
  6. 好东西硬盘故障率还是西数黑盘,绿盘最低啊
  7. linux新建分区步骤
  8. 如何下载顺义区卫星地图高清版大图
  9. Linux添加开机自启动应用
  10. 贝拉博客,一个屌丝网站