3

我是 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 }

4

2 回答 2

3

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

于 2017-08-04T14:31:07.130 回答
0

我发现有人说:
“这是关于分析例程,而不是仪器例程。AFAIK,你不能在分析例程中处理 INS、BBL 或 TRACE 类型,正如你所见,没有办法通过它们到分析程序……”

于 2015-06-16T12:26:45.790 回答