用于在LLVM中写入传递的更高级别工具

时间:2012-09-21 16:24:39

标签: c++ c llvm

通常如果要修改LLVM IR,则需要编写通行证。但是,如果更高级别的工具可以帮助您,那么自己写一个通行证有时会有些过分。

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

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

1 个答案:

答案 0 :(得分:2)

我认为你应该考虑使用PIN而不是LLVM:http://www.pintool.org/

PIN使您可以在多个粒度级别插入检测/分析代码:指令,基本块,功能,跟踪甚至加载/卸载共享库。由于您不需要编译应用程序,因此可能更实用,因此您可以分析非开源程序。

有适用于Windows和Linux的PIN版本。

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