zoukankan      html  css  js  c++  java
  • Pin学习笔记--安装及一些基本知识

    具体请见用户手册Pin 3.2 User Guide https://software.intel.com/sites/landingpage/pintool/docs/81205/Pin/html/index.html

    一、在windows下安装过程:
    1、安装Cygwin
    Cygwin安装的时候,默认不安装make工具。可以只选择make的那个安装包,测试发现只安装这个包是没有问题的。也可以使All后面的字变为install,安装所有组件(当然需要的时间也稍长一些)。
    2、下载pin,解压
    3、把cygwin64in 和 pin.exe所在的目录 添加到环境变量
    4、编译pin提供的例子:

       启动cmd,执行vcvars64.bat,进入pin下的source oolsManualExamples目录,make all TARGET=intel64,编译64位dll。
       启动cmd,执行vsvars32.bat,进入pin下的source oolsManualExamples目录,make all TARGET=ia32,编译32位dll。

    二、三种级别的跟踪
    INS_AddInstrumentFunction指令级跟踪INS_InsertCall
    TRACE_AddInstrumentFunction 基本快跟踪,可以用来跟踪BBL BBL_InsertCall
    IMG_AddInstrumentFunction IMG_AddUnloadFunction 映像跟踪

    三、一些函数
    RTN_AddInstrumentFunction 函数跟踪 RTN_InsertCall
    PIN_AddThreadStartFunction 线程开始
    PIN_AddThreadFiniFunction 线程结束
    PIN_SafeCopy用于将指定数量的字节从源存储器区域复制到目标存储器区域。 即使源或目标区域无法访问(完全或部分),此功能也可确保安全返回到调用者。
    PIN_AddFollowChildProcessFunction()  注册回调函数,回调函数在子进程开始执行前执行 Windows/Linux
    PIN_AddForkFunction()  注册回调函数,跟踪父进程或子进程  Linux

    四、其他

    1、字符串

    KNOB<string> KnobOutputFile(KNOB_MODE_WRITEONCE,  "string_family","o", "default_string", "description");
    "o"表示命令行参数
    pin -t obj-intel64/inscount0.so -o inscount0.log -- /bin/ls

    表示把inscount0.log参数传递给KnobOutputFile

    2、
    IPOINT_BEFORE 指令之前,或者函数开始的地方
    IPOINT_AFTER 指令之后,或者函数ret的地方

    3、实验中发现,在Windows上,如果在一个多线程应用程序中使用的pin工具,在回调函数中打开文件可能发生死锁,有些函数在回调中使用可能造成程序莫名崩溃。

    4、Pin有两种模式,一种是JIT(Just In Time),个人理解为实时编译;另一种是Probe,个人理解为Hook。Probe更快,但是可以使用的Pin相关功能更少。

    5、修改程序执行流程INS_InsertDirectJump INS_InsertIndirectJump INS_Delete

    6、调试

    pin -pause_tool 20 … 开始的时候暂停20秒,这时可以attach

  • 相关阅读:
    Windows7旗舰版安装VS2008的SP1的问题(KB945140, KB947888)
    Hex RGB颜色值互换
    php沥遍目录结构
    linux ftp设置
    Android开发环境搭建
    php读取excel文件
    wordpress插件制作
    wordpress主题制作
    php读取excel文件(OLERead.php页代码)
    php ios推送
  • 原文地址:https://www.cnblogs.com/woswod/p/6421787.html
Copyright © 2011-2022 走看看