首页
社区
课程
招聘
[求助]求助pin插桩间接跳转的call,jump,ret指令
发表于: 2017-10-24 09:23 4430

[求助]求助pin插桩间接跳转的call,jump,ret指令

2017-10-24 09:23
4430
#include <stdio.h>
#include<iostream>
#include<fstream>
#include"pin.H"

using namespace std;
ofstream OutFile;
//指定输出文件
KNOB<string> KnobOutputFile(KNOB_MODE_WRITEONCE,"pintool",
    "o", "branch.out","specify output file name");
//分析例程
void recording(VOID*ip,ADDRINT addr)
{
        OutFile<<hex<<"From:"<<ip<<"  To:"<<(void*)addr<<endl;
}
//插装回调函数
void instruction(INS ins,VOID *v)
{
          //判断当前指令是否是转移指令或者Call调用指令
        if(INS_IsIndirectBranchOrCall(ins))
          {
                    INS_InsertCall(ins,IPOINT_TAKEN_BRANCH, (AFUNPTR)recording, 
IARG_INST_PTR,INS_DirectBranchOrCallTargetAddress(ins),IARG_END);
          }
}
 
VOID Fini(INT32 code,VOID *v)
{
     OutFile.close();
}
int main(int argc,char * argv[])
{
    PIN_InitSymbols();
    PIN_Init(argc, argv);
   OutFile.open(KnobOutputFile.Value().c_str());
    INS_AddInstrumentFunction(instruction,0);
    PIN_AddFiniFunction(Fini, 0);
    PIN_StartProgram();   
    return 0;
}
想要用pin插桩间接跳转的call,jump,ret.获取原地址和跳转后的地址,这个还要怎么改下。。谢谢了

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//