IDA 官方推出插件管理器: http://hex-rays.com/blog/introducing-the-ida-plugin-manager
IDA 官方推出了一款插件管理器 ida-hcli,可以很方便来管理插件 (安装、更新、删除等),除了管理插件,还有其它许多有趣的功能。以下只是记录使用管理器遇到的问题。
安装插件管理器
插件安装管理器需要依赖以下:
- 至少 Python3.10
- uv 包管理器
克隆 ida-hcli 库
git clone https://github.com/HexRaysSA/ida-hcli.git
安装项目依赖
cd ida-hcli
uv sync
执行
uv run hcli --help
如果不想通过 uv 方式来执行,可以将其打包成可执行文件
# 添加 pyinstaller
uv add pyinstaller
# 打包
uv run pyinstaller --onefile src/hcli/main.py
# 重命令为 hcli
mv dist/main dist/hcli
打包后的文件在 dist 目录下,为了方便到处运行,将其放在 /usr/local/bin 目录下
cp dist/hcli /usr/local/bin
安装插件
在初始使用 hcli 前先设置下 IDA 默认安装路径
hcli ida set-default /Applications/IDA\ Professional\ 9.3.app
执行完后会在 ~/.idapro 目录下生成 ida-config.json 文件,写入的内容
{"Paths": {"ida-install-dir": "/Applications/IDA Professional 9.3.app"}
列举可用的插件
hcli plugin search

上图中 incompatible 表示此插件不兼容当前 IDA 版本,安装了插件会显示 installed。
遇到的问题
在装插件时遇到 python 环境问题,导致插件安装失败,在启动 IDA 时,会使用当前系统 Python 环境,如今 Python 不允许直接通过 pip 方式安装第三库。
较新版本的 IDA 支持使用虚拟 Python 环境,所以给 IDA 指定一个虚拟环境
# 进入 .idapro 目录下
cd ~/.idapro
# 使用 uv 来创建虚拟环境
uv venv --seed venv
# 激活虚拟环境
source venv/bin/activate
# 启动 IDA
/Applications/IDA\ Professional\ 9.3.app/Contents/MacOS/ida
以上有个问题,每次打开 IDA 时,都要先 source 一下,再从命令行启动,而且我是把 IDA 放在 Dock 启动栏,打开时不会运行在虚拟 Python 环境中,使用 idapyswitch 也检测不到虚拟环境,所以这就造成了 hcli 在装插件 (Python 类插件) 时会报错,那么有没有一种方式既能从 Dock 栏点击 IDA 图标启动自动设置虚拟环境,又能让 hcli 正常工作,这时需要手动在 ~/.idapro 目录下创建一个名为 idapythonrc.py 的脚本文件
idapythonrc.py
from pathlib import Path
def activate_virtualenv(virtualenv_path: Path):
for bindir in ("Scripts", "bin"):
activate_this_path = virtualenv_path / bindir / "activate_this.py"
if not activate_this_path.exists():
continue
if not activate_this_path.is_file():
continue
exec(activate_this_path.read_text(), dict(__file__=str(activate_this_path)))
print("activated virtual environment: " + str(virtualenv_path))
break
else:
raise ValueError('Could not find "activate_this.py" in ' + str(virtualenv_path))
IDAUSR = Path("/Users/zer0daysec/.idapro")
activate_virtualenv(IDAUSR / "venv")
启动 IDA 会自动调用 idapythonrc.py 文件,此 py 文件又会去调用 activate_this.py 去激活虚拟环境,这样问题就解决了,hcli plugin install [要安装的插件名] 执行也就不会报错了。通过 hcli 安装的插件会装在 ~/.idapro/plugins 目录下。


Have Fun !!!