如何指定代码区域以通过 pintool 对其进行检测?

Mos*_*Moh 4 intel-pin

Pin中有四个粒度级别:例程、指令和图像、跟踪。我可以指定一个限制/区域来开始和停止插入检测代码。可以通过类似指令(#start instrumentation,#end instrumentation)或类似的东西,

一个例子:
for( int i=0; i< x; i++) { #startInstrumentation for( ....;.....;.....) { // some code // function call, conditions , loops, .... } #endInstrumentation }
有没有办法做到这一点?

nit*_*nms 5

您可以使用基于跟踪的检测来执行您想要的操作。在每个跟踪的开始,检查它的起始地址,如果它不在感兴趣的范围内,避免添加分析函数并立即从例程返回。

跟踪可能会从感兴趣区域的外部开始,但在其内部结束,或者相反。如果发生这种情况,您将需要对要检测的内容进行更细粒度的选择。在投入精力之前,我会检查这是否是一个真正的问题。

如果您对检测特定例程或图像感兴趣,请考虑使用套件中 InstLib 中的 filter.cpp。InstLibExamples 中提供了一个使用示例。

现在,至于如何定位这些感兴趣的区域,您有多种选择。如果您无法控制目标二进制文件,您可以在命令行参数中指定区域,作为感兴趣图像的一对偏移量。

如果您可以控制二进制,则可以插入两个符号,指定感兴趣区域的开始和结束,然后使用 SYM 接口迭代图像符号。