用Pin获取读写关系

逆向工程 小工具
2021-07-04 04:13:49

老实说,Pin 混淆了我的直觉。让我们说,为了争论,我有一条线

 a = b + c

然后我希望将 b 和 c 的地址存储为 a 的依赖项,例如,在地图中,

m[address of a].append(address of b, address of c)

我目前对此的理解包括

if (INS_IsMemoryRead(ins)||INS_IsMemoryWrite(ins))
for(memOp=0;memOp<INS_MemoryOperandCount(ins);memOp++)
INS_InsertPredicatedCall(ins, IPOINT_BEFORE, (AFUNPTR) AnalysisFunction, IARG_MEMORYOP_EA, memOp, IARG_THREAD_ID, IARG_END);

其中 AnalysisFunction 本质上将从操作中获取内存地址并以某种方式返回它,或将其放入映射中。但我不完全确定如何做到这一点,或者如何正确关联读取和写入。

任何帮助,将不胜感激

0个回答
没有发现任何回复~