如何将指令传递给intel-pintool中的回调?

时间:2015-06-15 15:30:30

标签: c++ intel-pin

我是pintool的新手,我知道如何传递指令地址回拨,使用:
INS_InsertPredicatedCall( ins, IPOINT_BEFORE, (AFUNPTR)MyFunction, IARG_ADDRINT, INS_Address(ins), IARG_END); // My call back function is: MyFunction(UINT64 insAddress) { .... }

有没有办法通过对回叫的指令,或者可以从其地址中提取它。
如:
MyFunction( UINT64 insAddress, INS ins ) {.... }
MyFunction(UINT64 insAddress) { INS ins = someFunction(insAddress);// some function that return instruction of a specified address }

2 个答案:

答案 0 :(得分:0)

我发现有人说:
“这是关于分析例程,而不是仪器例程。 AFAIK,您无法在分析例程中处理INS,BBL或TRACE类型,并且您已经看到无法将它们传递给分析例程......“

答案 1 :(得分:0)

我用于此的解决方案是将INS传递给自定义对象,并将这些对象保存到std::map<ADDRINT, Instruction>的地图中。然后,当我需要访问指令时,我将它们按地址映射。似乎工作正常。