您可能知道,PIN是一种动态二进制检测工具。例如,通过使用 Pin,我可以检测应用程序中的每个加载和存储。我想知道是否有类似的工具在编译时注入代码(使用更高级别的信息,不需要我们编写 LLVM 通道),而不是像 Pin 那样在运行时注入代码。我对这种用于 LLVM 的工具特别感兴趣。
您可以编写自己的LLVM 通行证,并将它们应用到您的代码中,以便在编译时“检测”它。这些在 LLVM IR 上工作并生成 LLVM IR,因此对于某些任务来说,这将是一件非常自然的事情,而对于其他任务来说,这可能很麻烦或困难(因为 LLVM 和 IR 以及源语言之间的差异)。这取决于。