IDACode 让您无需离开 Visual Studio Code 即可轻松在 IDA 环境中执行和调试 Python 脚本。该 VS Code 扩展可在市场中找到。
IDACode 仍处于非常早期的阶段,可能会存在错误。如果您遇到任何问题,请提交新的 issue。
debugpy 进行通信,它会自然地将输出窗口与 VS Code 的输出面板同步。IDACode 已在 Windows 和 macOS 上使用 IDA 8.4/9.0 和 Python 3.12 测试通过(旧版 Python 在调试方面存在问题)。
要为 IDA 插件安装依赖项,请运行:
# 确保使用正确的 Python 版本
# IDACode 从 3.0.0 版本开始支持最新的 debugpy,请务必升级!
python -m pip install --user debugpy tornado
克隆此仓库或从此处下载发布包。ida.zip 反映了此仓库中 ida 文件夹的内容。将所有文件复制到 IDA 的插件目录中。
下一步是根据您的环境配置设置(可选)。编辑 idacode_utils/settings.py 文件:
HOST:主机地址。除非您希望从远程位置访问,否则始终为 127.0.0.1。请注意,此插件不使用身份验证。PORT:您希望 IDA 监听的端口。用于 IDA 与 VS Code 之间的 WebSocket 通信。DEBUG_PORT:用于监听传入调试会话的端口。LOGGING:确定调试器是否将日志记录到文件。当您遇到 IDACode 问题时尤其有用。如果发现任何问题,请提交新的 issue。日志文件始终位于您的临时目录中(例如,Windows 下的 %TEMP%)。文件名为 debugpy.*.log。现在,您可以通过点击插件菜单中的 IDACode 来启动插件。
VS Code 扩展可在市场获得。有关扩展的配置,请参考扩展的 README。
点击插件菜单中的 IDACode。您应该会看到以下文字:
IDACode listening on 127.0.0.1:7065
从 0.2.0 版本开始,IDACode 支持“保存时执行”,该功能默认启用。当您保存当前文档时(例如使用 CTRL+S),VS Code 会自动在 IDA 中执行您的脚本。此行为可以在设置中禁用。使用 Ctrl-Shift-P 打开 VS Code 扩展开发控制台,输入 "idacode" 查看以下命令列表。不要使用 VS Code 的“运行”或“调试”功能,否则 IDA 中会收到 "HTTP misformed" 消息。
您可以使用以下 4 条命令:

一旦您打开了一个要放置脚本的文件夹(VS Code 询问时必须指定该文件夹),您就可以连接到 IDA。您可以通过执行 Connect to IDA 或 Connect and attach a debugger to IDA 来完成连接。请注意,调试会话在您重启 IDA 之前是永久性的。调试器启动后,您无法更改工作区文件夹。
请确保工作区文件夹是您主脚本所在的文件夹。
连接后,您就可以选择 Execute script in IDA。
IDACode 使用 VS Code 的远程调试器连接到 IDA。所有 VS Code 功能均受支持。但是,您必须使用 Python 内置功能 breakpoint 来指定脚本的入口点。此指令告诉调试器暂停执行,如果没有调试器存在,它只会忽略该函数。IDACode 导入了一个名为 dbg 的帮助包,该包实现了 breakpoint 的重载,称为 bp。此函数支持日志记录和条件:
name = idc.get_segm_name(segment)
dbg.bp(name==".text", f"found {name} at {segment}")
另请注意,breakpoint() 调用绝不应出现在文件末尾,它必须始终位于其他代码行之前,因为它会在代码的_下一个_指令处中断。另请注意,如果您决定使用 dbg 包,则必须删除所有引用,或在将其作为普通 IDA 脚本执行之前使用变量 __idacode__ 作为条件。
此外,附加调试器会创建一个新的调试器实例,这在大多数情况下并不是您想要的。如果您断开与调试器的连接,请使用 VS Code 的远程调试器重新连接。
