PinTools学习笔记(1)——安装和入门

介绍性文字就不说了,百度一下有很多,简单来说就是一个输入是可执行文件的动态插桩分析工具。

安装非常简单,不需要编译,直接从官网https://software.intel.com/en-us/articles/pintool-downloads下载、解压即可,PinTools自带很多例子,在source/tools/ManualExamples路径下,参考这些源码对学习PinTools非常有用。

以下内容主要参考官方用户手册以及我在实践中遇到的问题。

写插桩程序简单概括为两个问题:(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]..

如果程序文件在别的目录下,只要将makefile中的PIN_ROOT设为pin所在路径即可。

以PinTools自带的数语句数目的instrument0.so为例

$ cd source/tools/ManualExamples
$ ../../../pin -t obj-ia32/inscount0.so -- /bin/ls

需要注意的是--后一定要空一格再跟[application],否则会报Missing target applicaton的错误

此外还可能遇到

The Operating System configuration prevents Pin from using the default (parent) injection mode.To resolve this,either execute the following (as root):

$ echo 0>/proc/sys/kernel/yama/ptrace_scope  # 根据本机路径

Or use the "-injection child" option

我用的第二种

$ ../../../pin -injection child -t obj-ia32/inscount0.so -- /bin/ls

接下来可以根据自己的需要编写工具啦,边写边学,PinTools自己定义的函数、类型什么的特别多,可以多看看官方模块/类说明文档

PinTools编程有一定模式,大致可以分为三个部分Analysis routines, Instrument routines和Main

ManualExamples/malloctrace.cpp为例,Analysis routines是你想在插入点做什么,比如那个MallocAfter(ADDRINT ret)会被放在malloc函数返回后,作用是打印malloc函数的返回值;Instrument routines是对插桩函数的描述和固定,经常用到RTN_InsertCall、INS_InsertCall等等,参数是插入点、插入点前后、插入的函数、插入函数的参数列表,就像构造一个函数原型,你的Analysis routines是什么样子的,参数列表里填对应的数据类型和数据就可以;Main主程序,没仔细研究,感觉模式比较固定,就是一些初始化操作、调用插桩函数、启动工具的命令。

今天试着在ManualExamples/malloctrace.cpp的基础上写个监测malloc/free函数和内存访问操作的工具,可是程序陷入死循环了,目前没找到原因,明天打算开始好好看下PinTools在Linux下的调试技巧。

未完待续~

时间: 2024-10-13 13:38:50

PinTools学习笔记(1)——安装和入门的相关文章

nodejs学习笔记之安装、入门

由于项目需要,最近开始学习nodejs.在学习过程中,记录一些必要的操作和应该注意的点. 首先是如何安装nodejs环境?(我用的是windows 7环境,所以主要是windows 7的例子.如果想看linux下的安装可以参考http://www.cnblogs.com/meteoric_cry/archive/2013/01/04/2844481.html) 1. nodejs提供了一些安装程序,可以去官网(http://nodejs.org/download/)按照自己的机器进行下载,下载完

MongoDB 学习笔记一 安装以及基础命令

一.MongoDB安装配置 1.获取最新版本: wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.0.2.tgz 2.解压缩即可执行 tar zxvf mongodb-linux-x86_64-2.0.2.tgz tar zxvf mongodb-linux-x86_64-2.0.2.tgz cd /usr/mongodb-linux-x86_64-2.0.2/bin 但是在运行前,需要创建mongodb需要的存放数据和日志的

node.js在windows下的学习笔记(1)---安装node.js

1.首先打开http://www.nodejs.org/ 2.选择DOWNLOADS,跳转到下面的画面,我的系统是windows7的32位.所以选择.msi的32bit版本. 3.下载后,得到一个5.43MB大小的安装包, 4.运行安装包 点击next 打个勾,点击next 选择安装目录 最后,安装成功啦 node.js在windows下的学习笔记(1)---安装node.js,布布扣,bubuko.com

卷积神经网络(CNN)学习笔记1:基础入门

卷积神经网络(CNN)学习笔记1:基础入门 Posted on 2016-03-01   |   In Machine Learning  |   9 Comments  |   14935  Views 概述 卷积神经网络(Convolutional Neural Network, CNN)是深度学习技术中极具代表的网络结构之一,在图像处理领域取得了很大的成功,在国际标准的ImageNet数据集上,许多成功的模型都是基于CNN的.CNN相较于传统的图像处理算法的优点之一在于,避免了对图像复杂的

Node.js学习笔记【1】入门(服务器JS、函数式编程、阻塞与非阻塞、回调、事件、内部和外部模块)

笔记来自<Node入门>@2011 Manuel Kiessling JavaScript与Node.js Node.js事实上既是一个运行时环境,同时又是一个库. 使用Node.js时,我们不仅仅在实现一个应用,同时还实现了整个HTTP服务器. 一个基础的HTTP服务器 server.js:一个可以工作的HTTP服务器 var http = require("http"); http.createServer(function(request, response) { r

[Linux] 学习笔记之安装学习环境(sshd, lrzsz)

紧接前一篇,在VMWare安装完Linux,这个时候我们要使用远程工具连接到虚拟机上去了,以前一直使用Putty,后来到新公司之后,推荐使用SecureCRT,使用之后,觉得效果不错,但是每次连接都失败,linux新手伤不起,在网上搜啊搜,终于找到解决办法.   搜索了很多资料之后,发现是由于我未在Linux上安装ssh服务导致无法使用SecureCRT连接. 1. 可以使用ssh localhost对此进行测试,具体使用如下: 2. 使用apt-get或者yum安装ssh服务,具体哪种操作系统

python学习笔记1——安装python

python学习笔记1--安装python centos和ubuntu的python2.7的安装方法参考:http://daixuan.blog.51cto.com/5426657/1767325 1.查看当前python版本并且 [[email protected] ~]# python -V Python 2.6.6 2.安装eple-release扩展源 [[email protected] ~]# yum install -y epel-release 3.安装pip [[email p

CentOS学习笔记--Tomcat安装

Tomcat安装 通常情况下我们要配置Tomcat是很容易的一件事情,但是如果您要架设多用户多服务的Java虚拟主机就不那么容易了.其中最大的一个问题就是Tomcat执行权限.普通方式配置的Tomcat是以root超级管理员的身份运行的,显然,这是非常危险的,可想而知,一但网站被挂马,您的整个服务器都可以被黑客控制了.而通过编译或在线(例如redhat系列的yum, debian系列的apt-get)的方式安装,一个服务器上又只能装一个tomcat的服务,如果将多个网站放到同一个tomcat服务

[Linux][VMWare] 学习笔记之安装Linux系统-网络配置

最近开始折腾Linux,在本机装了个VMWare和Centos,装完之后虚拟机里面的OS可以上网,但是使用SecureCRT连接不上虚拟机,开始折腾这个网络. vmware安装好以后,会自动添加两张网卡(vmnet1和vmnet8),中间网卡),整个机器的结构就可以抽象成:虚拟机系统(虚拟机网卡vmnet0)--(vmnet1 vmnet8),中间网卡)--实际系统网卡 vmware的网卡设置的几种方式: 1. Bridged(桥接)方式     用这种方式,虚拟系统的IP可设置成与本机系统在同

docker学习笔记1 -- 安装和配置

技术资料 docker中文官网:http://www.docker.org.cn/ 中文入门课程:http://www.docker.org.cn/book/docker.html docker学习笔记:http://www.open-open.com/lib/view/open1423703640748.html 深入浅出docker:http://www.infoq.com/cn/articles/docker-core-technology-preview 安装 参考:http://www