安装 angr ======== angr 是一个适用于 Python 3.10+ 的库,必须安装到 Python 环境中才能使用。 从 PyPI 安装 ---------- angr 发布在 `PyPI `_ 上,从 PyPI 安装是安装 angr 最简单和最推荐的方式。即,使用 pip 安装 angr: .. code-block:: bash pip install angr .. tip:: 建议安装时使用隔离的 Python 环境,不要全局安装 angr。因为隔离的 Python 环境可以减少依赖冲突,在调试时也有助于重现问题。一些流行的工具包括: * `venv `_ * `pipenv `_ * `virtualenv `_ * `virtualenvwrapper `_ * `conda `_ .. note:: PyPI 分发版包含了大多数流行系统配置的二进制包。如果您使用的系统不受二进制包支持,则需要从源代码构建 C 依赖项(译者注:意思是有一些组件是编译成二进制形式进行分发的,需要对不同的系统做适配,angr 已经对大多数流行的操作系统(如Ubuntu、Windows)做适配了,但也没有覆盖所有的操作系统,如果你发现 PyPI 装的用不了,就必须源码安装)。有关更多信息,请参见 `从源代码安装`_ 部分。 从源代码安装 ------------ angr 是多个 Python 包的集合,每个包都发布在 GitHub 上。从源代码安装 angr 最简单的方法是使用 `angr-dev `_。 要手动设置开发环境,首先确保安装了构建依赖项。这些依赖项包括 Python 开发时用到的头文件、 ``make`` 和 C 编译器。在 Ubuntu 上,可以使用以下命令安装: .. code-block:: bash sudo apt-get install python3-dev build-essential 然后,按顺序检出并安装以下包: * `archinfo `_ * `pyvex `_ (使用 ``--recursive`` 克隆) * `cle `_ * `claripy `_ * `ailment `_ * `angr `_ (使用 ``pip install`` 和 ``--no-build-isolation`` ) 使用 Docker 安装 -------------- angr 团队在 Docker Hub 上维护了一个包含 angr 及其依赖项的容器镜像。可以使用以下命令拉取该镜像: .. code-block:: bash docker pull angr/angr 可以使用以下命令运行该镜像: .. code-block:: bash 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`` 即可。