1

我想在二进制文件中的每条类似 jmp 的指令之后添加无害 unconditional branches以确保当我们记录使用 Intel 的. 就像在这段代码中:Last Branch Record

if(a==0){
 f1(); 
}
else{
 f2();
}

当执行该else部分时,jne可能会执行一条指令。但是,没有jmp-related指令可以观察到该if部分已执行。

  • 是否有工具可以在二进制级别源级别为条件语句静态添加这些指令?unconditional jmp
  • 我试过TestCocoon这样使用:csgcc --cs-branch -g test.c但是,检测开销非常高(大约是原始可执行文件的 3 倍)。我想我没有使用正确的编译器选项。如果您可以提供一些指针来添加具有低检测开销的无害无条件分支,那就太好了。
4

2 回答 2

2

Pin is a good binary instrumentation tool for X86. You can easily achieve with it what you intend.

于 2013-04-10T08:13:12.337 回答
0

是的,有一个工具可以静态地做到这一点,尽管它需要源代码生产者的合作。这是一个视频,其中一些开发人员使用 llvm 来尝试查找竞争条件。但是,建议的 PIN 工具可以精确地完成您想要的(或至少如所描述的那样)。

我认为您应该问自己的一个好问题是,这是否是分析是必须静态完成的事情。就此而言,我将您指向动态分析。另一个要问的问题是你是否真的应该从头开始这样做;社区制作的工具的可用性相当广泛。这是一个很好的分析器,但我不确定这是否适合您的需求,因为您没有很好地描述您的需求......

另外,关于开销——我认为几乎任何检测工具都会增加很多开销。为了解决这个问题,我想说的是,产生高效分析所需的努力通常是不值得的。除非您正在制作分析库,否则我建议您不要这样做,因为您想要的只是检测的结果。

于 2013-11-04T17:16:54.693 回答