2

通常如果你想修改 LLVM IR,你需要写一个 pass。但是,如果更高级别的工具可以为您提供帮助,有时自己编写通行证是一种矫枉过正的做法。

例如,有人可能希望在程序中记录每个loadstore。为此,他需要注入执行日志记录的代码。现在如果有更高级别的工具,它可以提供回调给我们写我们想要的东西。因此,在这种情况下,例如,它可以为我们提供我们可以填充OnLoadOnStore函数来告诉工具在每次加载和存储时要做什么。这种工具存在吗?

所以基本上我想要类似于动态二进制工具工具提供的东西,但它适用于 LLVM,用于编译时代码注入。

4

1 回答 1

2

我认为你应该考虑使用 PIN 而不是 LLVM 来处理这些事情:http ://www.pintool.org/

PIN 使您能够在多个粒度级别插入检测/分析代码:指令、基本块、功能、跟踪甚至共享库的加载/卸载。这可能是一种更实用的方式,因为您不需要编译应用程序 - 因此您可以分析例如不是开源的程序。

有适用于 windows 和 linux 的 PIN 版本。

PS:另一个似乎有用的工具: http: //eces.colorado.edu/~blomsted/llvmpin/llvmpin.html

于 2012-09-30T00:53:56.817 回答