通常如果要修改LLVM IR,则需要编写通行证。但是,如果更高级别的工具可以帮助您,那么自己写一个通行证有时会有些过分。
例如,有人可能希望在程序中记录每个load
和store
。为此,他需要注入执行日志记录的代码。现在,如果有更高级别的工具,它可以为我们提供回调以写出我们想要的东西。因此,在这种情况下,例如,它可以为我们提供OnLoad
和OnStore
函数,我们可以填充这些函数来告诉工具在每个加载和存储上做什么。这种工具是否存在?
所以基本上我想要一些类似于动态二进制检测工具提供的东西,但它适用于LLVM,用于编译时代码注入。
答案 0 :(得分:2)
我认为你应该考虑使用PIN而不是LLVM:http://www.pintool.org/
PIN使您可以在多个粒度级别插入检测/分析代码:指令,基本块,功能,跟踪甚至加载/卸载共享库。由于您不需要编译应用程序,因此可能更实用,因此您可以分析非开源程序。
有适用于Windows和Linux的PIN版本。
PS:另一个看似有用的工具:http://eces.colorado.edu/~blomsted/llvmpin/llvmpin.html