如何从 IDA 中调试 IDAPython 脚本?

逆向工程 Python 蟒蛇 艾达
2021-07-06 02:45:29

IDAPython 是 IDA 中很棒的插件。在 IDA 中编写小脚本来解码、解密或修复(修补)二进制文件非常方便。我可以只编写、加载和运行脚本,并且可以print用于通常的 Shotgun 调试。但是当我开发一个更大的 IDAPython 脚本时,我需要一种方法来调试它。

我搜索并发现我可以使用WingIDE调试 IDAPython,但我想找到另一个不需要 WingIDE 的。还有另一种调试IDAPython脚本的方法吗?

3个回答

你可以这样做。去年夏天,我与 Hexrays 和 WingIDE 的人一起工作并开始工作。事实上它在文档中!

http://wingware.com/doc/howtos/idapython

它岩石。

莱利

据我所知,在 IDA 中没有办法调试 python。

但是,您可以使用一些 Python 工具来调试自己的代码。但它本质上要求您围绕内置的 Python 调试工具开发自己的 Python IDE/调试器实用程序。

我按照复杂性的顺序列出了可能的方法(最简单的在前):

从 python 编译和运行你自己的 python 代码
更基本的方法是使用 pythoncompile内置函数将 python 代码编译成字节码,用evalor exec(也是内置函数)执行它compile返回一个AST(抽象语法树)对象,您可以进一步操作/调查。

使用 python 调试器(来自 python)
如果你想要更高级的调试能力,python 有它自己的内置 python 调试器模块,称为pdb. 你只需要告诉pdb要执行什么 python 代码,它就会产生一个类似于 的调试器界面gdb,命令行调试器可以让你设置条件断点,操作和分析 python 代码,并使用大多数常用的调试工具。

使用 python 调试框架
,python 调试器构建在 python bdb(基本调试器)之上,它是一个实现调试功能的类,可以在 IDA 的 python 命令行中使用。如果您要使用 ,则bdb必须围绕这些实用程序创建自己的工具和 UI。

编辑:我现在才看到 WingIDE。由于 OP 没有具体说明使用 WingIDE 的问题究竟是什么,我希望至少其中一种方法是相关的。

更新:这似乎已经过时了。

您可以使用 Python Tools for Visual Studio 调试 IDAPython 脚本。它是完全免费的,而且非常容易使用。

有关此信息,请参阅本教程