我使用 Python 分析二进制文件。我一直在使用调试器进行动态分析(即运行应用程序并使用断点来获取运行时执行)。但是,如果我可以使用一些像PIN这样的二进制仪器框架,结果可以得到改善。PIN 是用 C++ 开发的,并作为封闭源代码(仅限 dll)提供。我们编写了一个叫做 PinTools 的东西来描述我们想要拦截的位置和内容。我想将 PIN 功能移植到 Python 中,以便继续使用 Python。我知道“ctypes”和 boost-python。
我的问题是:为了使用 PIN,我们编写了一个 pintool 并使用 Pin 和 pintool 运行我们的二进制可执行文件(就像使用 JIT 运行应用程序一样)。现在,我不知道是否可以使用 ctypes 等来导入 PIN 函数并使用此 python 代码动态分析二进制文件。您能否就如何进行此任务提供一些建议或指导。
因此,在 nut-n-shell 中,我想为 PIN 框架创建一个 Python 接口(包装器)。