如何使用 IDAPython 设置 VSCode?

逆向工程 艾达 调试 蟒蛇 偏僻的
2021-06-18 02:30:13

是否可以使用 VSCode 和 ptvsd 远程调试 IDAPyhton 脚本?我在网上找到了一些教程,但没有人在工作。过去,使用相同的协议,我能够从 VSCode 连接到 Maya 并远程调试 Pymel 脚本。所以,我从 IDA python 控制台输入:

ptvsd.enable_attach(address=('localhost', 5678), redirect_output=True)

并最终:

ptvsd.wait_for_attach(60)

Python MsgBox 出现,告诉脚本正在运行...现在在 VSCode 中,我使用标准 json 配置文件启动要调试的脚本,以附加到远程调试器,但连接始终被拒绝。我尝试更改端口 (3528, 3000)、地址 (0.0.0.0) 并删除 redirect_output 标志。无论如何,我无法连接。我也试过:

ptvsd.break_into_debugger()

但同样,没有运气。

作为第二个问题,有没有办法让 import 语句识别 IDAPython 模块(idaapi、idc、idc_bytes 等)或使用自动完成?我知道 IDAPython 与 IDA 捆绑在一起并且没有安装在站点包中,但我想知道是否有解决方案(不是在 IDA 之外执行脚本,而是识别模块和关键字)。

2个回答

这应该适用于ptvsd

        {
            "name": "Python: Remote Attach",
            "type": "python",
            "request": "attach",
            "debugServer": 5678,
            "showReturnValue": true,
            "internalConsoleOptions": "openOnSessionStart",
            "redirectOutput": true,
        }

您可能需要breakpoint()在代码中插入一个显式

对于 VSCode 中的 IntelliSense,有PYTHONPATH

    "python.autoComplete.extraPaths": [
        "..."
    ],
    "python.analysis.extraPaths": [
        "..."
    ],

idacode在 VSCode 和 idapython 之间提供了很好的集成。

github repo 是找到IDA 插件的最佳位置,并且在扩展存储库中有一个同名的 VSCode 扩展可用。

如果您的 IDA 安装不在默认位置,请参阅 github 存储库中的自述文件。

安装后,您可以通过插件菜单在 IDA 中启用本地侦听服务器,然后在 VSCode 中打开包含 Python 代码的目录中的工作区。使用命令列表 (ctrl+shift+P),键入“IDA”并选择选项之一以使用或不使用调试器进行连接。那么每次保存python脚本时,都会在IDA中执行。

如果您希望使用vscodium而不是 vscode,您需要在扩展管理器菜单中选择“从 *.vsix 安装”,然后选择可以在此处下载的 vsix