在 Linux 上用 Windows IDA Pro 配合 AI 辅助逆向

Hex-Rays 前两天发布了官方的 IDA MCP 服务。

相比第三方 IDA MCP 封装的大量 Tools,官方 IDA MCP 只有 6 个 tools:

open_database
execute_python
reference
list_databases
save_database
close_database

而实际执行逆向操作的只有 execute_python:让 Agent 编写 Python 代码交给 IDA 执行。Hex-Rays 把它称为 Code Mode,他们认为 LLM 已经很好地掌握了 IDA / IDAPython,擅长写程序组合 IDA 的能力。

这样说的话,官方设计确实比第三方 MCP 的「一种操作对应一个 tool」更容易组合,Token 消耗也更少。

所以标题是什么意思

文章标题描述了我的个人方案,不推荐给您,除非您也符合这样的条件:

  • 日常工作都在 Linux,需要在 Linux 使用 Agent
  • 只能/想运行 Windows 版的 IDA Pro
  • 需要在 Windows 隔离分析,本就打算启动虚拟机

那么您可以这么做:

  1. 在 Windows 虚拟机安装 IDA Pro(需要 9.4 及以上版本)
  2. 在 Windows 虚拟机中安装 IDA MCP 服务 ida-mcp
  3. 在 Windows 虚拟机和 Linux 中安装并配置 WinApps
  4. 在 Windows 虚拟机中安装并启动 SSH 服务
  5. 在 Windows 虚拟机中启动 ida-mcp 的 HTTP 服务11.最好不要让 HTTP 监听 0.0.0.0 来省去 SSH 转发操作,暴露面过大,这个 MCP 可是能够执行任意代码的。

    $ uvx ida-mcp http --host 127.0.0.1 --port 8737
    
  6. 在 Linux 中使用 SSH 转发端口

    $ ssh -N -L 127.0.0.1:8737:127.0.0.1:8737 <User>@<IP>
    
  7. 在 Linux 中配置 Agent 的 MCP

    {
      "mcpServers": {
        "ida": {
          "type": "http",
          "url": "http://127.0.0.1:8737/mcp"
        }
      }
    }
    
  8. 在 Linux 中使用 WinApps 启动 IDA Pro

    $ winapps manual "C:\IDA Professional 9.4\ida.exe"
    
  9. 打开各种工具(和 Agent),享受舒适的逆向体验

WinApps 可以假装 IDA 像 Linux 原生应用一样运行,对于 MCP 操作不是必要的,但我舍不得省去这流畅体验的重要一环。

如果想更进一步,还可以在 WinApps 里添加 IDA Pro 应用:

  1. 创建 info 文件

    # IDA Professional
    
    # GNOME shortcut name
    NAME="IDA Pro"
    
    # Used for descriptions and window class
    FULL_NAME="IDA Professional 9.4"
    
    # The executable inside Windows
    WIN_EXECUTABLE='C:\IDA Professional 9.4\ida.exe'
    
    # GNOME categories
    CATEGORIES="WinApps;Windows;Development"
    
    # GNOME mimetypes
    MIME_TYPES=""
    
  2. 提取图标,放在 $HOME/.local/bin/winapps-src/apps/ida-pro/icon.svg
  3. 运行 winapps-setup --user --add-apps,选择添加应用「IDA Professional 9.4」

这样就可以用您心爱的应用启动器搜索打开「IDA Pro」了。

包括步骤 5「在 Windows 虚拟机中启动 ida-mcp 的 HTTP 服务」,也可以用 WinApps 启动 CMD / PowerShell 运行命令,假装只是 Linux 里的一个普通终端窗口。22.我真的很想在这附上一张屏幕截图,向您展示桌面小组件、终端、编辑器、IDA 等窗口全部统一样式的场景是多么和谐,但总找不到不暴露隐私的图片。


HTTP 服务可以改为使用 stdio,只不过这样就需要 SSH 直接执行命令,最好使用密钥认证,不然 MCP 连接时不方便处理密码输入。

{
  "mcpServers": {
    "ida": {
      "type": "local",
      "command": [
        "ssh",
        "-T",
        "-i",
        "/path/to/your_private_key",
        "<User>@<IP>",
        "uvx",
        "--exclude-newer=1s",
        "ida-mcp",
        "stdio"
      ]
    }
  }
}

为了人类的未来

现在 AI 公司会装模作样地在意网络安全,所以这些请求可能会被拒绝,我简单试验了几家模型:

  • GPT-6 拒绝率在一半以上,尤其在输出解密类的代码时
  • GPT-5.6 出现了一定程度的请求拒绝
  • GPT-5.5 没出现限制
  • Claude Opus 5.5 明确提示拒绝,并说明可以换用 Opus 4.8 执行
  • Claude Sonnet 5 没出现限制

DeepSeek API 据说没有任何限制,本地部署模型更不必说。

当然我并不是表达「工具只是工具」、「技术无罪」或与之完全相反的观念,我只是觉得 AI 公司提供的“网络安全限制”是纯粹的伪善。

它符合一切营销特征:建立信任、利用情绪、渲染焦虑、向您发送购买链接。这些特征同样适用于诈骗,区别在最后一步让您做什么,或您怎么看待营销。

“我们的产品太厉害了,可以影响您的工作岗位,所以您需要购买;我们的产品太厉害了,可以威胁国家安全,所以政府应该与我们合作;我们的产品太厉害了,可以毁灭人类的未来,所以……”

“为了人类共同的未来,我们要限制破坏性行为”,这种理由听起来无懈可击。但,是 GPT-5.5 和 Claude Opus 4.8 能力不足吗?几个月前你们可不是这么说的。

1

最好不要让 HTTP 监听 0.0.0.0 来省去 SSH 转发操作,暴露面过大,这个 MCP 可是能够执行任意代码的。

2

我真的很想在这附上一张屏幕截图,向您展示桌面小组件、终端、编辑器、IDA 等窗口全部统一样式的场景是多么和谐,但总找不到不暴露隐私的图片。

Copyright © 2024 13m0n4de · CC BY-NC 4.0