mirror of
https://github.com/angr/angr
synced 2026-06-08 13:09:39 +00:00
100 lines
3.3 KiB
ReStructuredText
100 lines
3.3 KiB
ReStructuredText
Installing angr
|
|
===============
|
|
|
|
angr is a library for Python 3.10+, and must be installed into a Python
|
|
environment before it can be used.
|
|
|
|
Installing from PyPI
|
|
--------------------
|
|
|
|
angr is published on `PyPI <https://pypi.org/>`_, and using this is the easiest
|
|
and recommended way to install angr. It can be installed angr with pip:
|
|
|
|
.. code-block:: bash
|
|
|
|
pip install angr
|
|
|
|
.. tip::
|
|
It is recommended to use an isolated python environment rather than installing
|
|
angr globally. Doing so reduces dependency conflicts and aids in
|
|
reproducibility while debugging. Some popular tools that accomplish this
|
|
include:
|
|
|
|
* `venv <https://docs.python.org/3/library/venv.html>`_
|
|
* `pipenv <https://pipenv.pypa.io/en/latest/>`_
|
|
* `virtualenv <https://virtualenv.pypa.io/en/latest/>`_
|
|
* `virtualenvwrapper <https://virtualenvwrapper.readthedocs.io/en/latest/>`_
|
|
* `conda <https://docs.conda.io/en/latest/>`_
|
|
|
|
.. note::
|
|
The PyPI distribution includes binary packages for most popular system
|
|
configurations. If you are using a system that is not supported by the
|
|
binary packages, you will need to build the C dependencies from source. See
|
|
the `Installing from Source`_ section for more information.
|
|
|
|
Installing from Source
|
|
----------------------
|
|
|
|
angr is a collection of Python packages, each of which is published on GitHub.
|
|
The easiest way to install angr from source is to use `angr-dev
|
|
<https://github.com/angr/angr-dev>`_.
|
|
|
|
To set up a development environment manually, first ensure that build
|
|
dependencies are installed. These consist of python development headers,
|
|
``make``, a C++ compiler, and a Rust compiler. On Ubuntu, these can be installed
|
|
with:
|
|
|
|
.. code-block:: bash
|
|
|
|
sudo apt-get install python3-dev build-essential
|
|
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
|
|
|
|
Then, checkout and install the following packages, in order:
|
|
|
|
* `archinfo <https://github.com/angr/archinfo>`_
|
|
* `pyvex <https://github.com/angr/pyvex>`_ (clone with ``--recursive``)
|
|
* `cle <https://github.com/angr/cle>`_
|
|
* `claripy <https://github.com/angr/claripy>`_
|
|
* `angr <https://github.com/angr/angr>`_ (``pip install`` with
|
|
``--no-build-isolation``)
|
|
|
|
Installing with Docker
|
|
----------------------
|
|
|
|
The angr team maintains a container image on Docker Hub that includes angr and
|
|
its dependencies. This image can be pulled with:
|
|
|
|
.. code-block:: bash
|
|
|
|
docker pull angr/angr
|
|
|
|
The image can be run with:
|
|
|
|
.. code-block:: bash
|
|
|
|
docker run -it angr/angr
|
|
|
|
This will start a shell in the container, with angr installed and ready to use.
|
|
|
|
|
|
Troubleshooting
|
|
---------------
|
|
|
|
angr has no attribute Project, or similar
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
If angr can be imported but the ``Project`` class is missing, it is likely one
|
|
of two problems:
|
|
|
|
#. There is a script named ``angr.py`` in the working directory. Rename it to
|
|
something else.
|
|
#. There is a folder called ``angr`` in your working directory, possibly the
|
|
cloned repository. Change the working directory to somewhere else.
|
|
|
|
AttributeError: 'module' object has no attribute 'KS_ARCH_X86'
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
The ``keystone`` package is installed, which conflicts with the
|
|
``keystone-engine`` package, an optional dependency of angr. Uninstall
|
|
``keystone`` and install ``keystone-engine``.
|