安装 angr¶
angr 是一个适用于 Python 3.10+ 的库,必须安装到 Python 环境中才能使用。
从 PyPI 安装¶
angr 发布在 PyPI 上,从 PyPI 安装是安装 angr 最简单和最推荐的方式。即,使用 pip 安装 angr:
pip install angr
小技巧
建议安装时使用隔离的 Python 环境,不要全局安装 angr。因为隔离的 Python 环境可以减少依赖冲突,在调试时也有助于重现问题。一些流行的工具包括:
备注
PyPI 分发版包含了大多数流行系统配置的二进制包。如果您使用的系统不受二进制包支持,则需要从源代码构建 C 依赖项(译者注:意思是有一些组件是编译成二进制形式进行分发的,需要对不同的系统做适配,angr 已经对大多数流行的操作系统(如Ubuntu、Windows)做适配了,但也没有覆盖所有的操作系统,如果你发现 PyPI 装的用不了,就必须源码安装)。有关更多信息,请参见 从源代码安装 部分。
从源代码安装¶
angr 是多个 Python 包的集合,每个包都发布在 GitHub 上。从源代码安装 angr 最简单的方法是使用 angr-dev。
要手动设置开发环境,首先确保安装了构建依赖项。这些依赖项包括 Python 开发时用到的头文件、 make 和 C 编译器。在 Ubuntu 上,可以使用以下命令安装:
sudo apt-get install python3-dev build-essential
然后,按顺序检出并安装以下包:
使用 Docker 安装¶
angr 团队在 Docker Hub 上维护了一个包含 angr 及其依赖项的容器镜像。可以使用以下命令拉取该镜像:
docker pull angr/angr
可以使用以下命令运行该镜像:
docker run -it angr/angr
这将启动容器中的一个 shell。在这个 shell 中,angr 已安装并可以使用。
故障排除¶
angr has no attribute Project,或类似问题¶
如果可以导入 angr 但缺少 Project 类,可能是以下两个问题之一:
工作目录中有一个名为
angr.py的脚本。将其重命名为其他名称。工作目录中有一个名为
angr的文件夹,可能是克隆的仓库。将工作目录更改为其他位置。
AttributeError: 'module' object has no attribute 'KS_ARCH_X86'¶
这个问题可能是因为安装了 keystone 包,而这与 angr 的可选依赖项 keystone-engine 包冲突。卸载 keystone 并安装 keystone-engine 即可。