gpt4 book ai didi

c++ - 使用 Intel Pin 时跟踪不匹配的 CALL 和 RET 指令数

转载 作者:太空狗 更新时间:2023-10-29 23:15:21 25 4
gpt4 key购买 nike

我正在尝试使用 Intel Pintool 来监控 x86-64 机器 (Mac Pro) 上的 CALLRET 指令。我将 IARG_INST_PTR(如下所述)传递给 docount 函数,并使用指令指针通过检查操作码(CALL是 0xe8 并且 RET 是来自 Intel x86-64 manual 的 0xc3。但是,这个检查似乎并不完全准确,因为我注意到 RET 的数量比 CALL 对于使用此逻辑检测的任何给定二进制文件。

INS_InsertCall(ins, IPOINT_BEFORE, (AFUNPTR)docount, IARG_CONTEXT,
IARG_INST_PTR, IARG_END);

谁能给我一些关于我做错了什么的指示?

我从/tools/ManualExamples/inscount0.cpp 借用了模板。要找到它,请搜索文件名 here .

最佳答案

call 和 ret 指令之间并不总是匹配,因为函数可能会被异常、类似 goto 的语句、longjumps、信号等打断……所以如果你想重新调和 calls 和 ret,你可能想要考虑所有这些。

这个已经讨论过好几次了,尤其是here

关于c++ - 使用 Intel Pin 时跟踪不匹配的 CALL 和 RET 指令数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29712225/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com