我是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
}
答案 0 :(得分:0)
我发现有人说:
“这是关于分析例程,而不是仪器例程。
AFAIK,您无法在分析例程中处理INS,BBL或TRACE类型,并且您已经看到无法将它们传递给分析例程......“
答案 1 :(得分:0)
我用于此的解决方案是将INS传递给自定义对象,并将这些对象保存到std::map<ADDRINT, Instruction>
的地图中。然后,当我需要访问指令时,我将它们按地址映射。似乎工作正常。