原文
安装angr
angr是一个python库,所以它必须安装到你的python环境中才能被使用。它以Python 3构建的:由于Python 2 EOL(End-of-life)的迫近且我们团队较小,对Python 2未做支持。
我们强烈建议使用python虚拟环境来安装和使用angr。一些angr的依赖项(z3,pyvex)需要原生代码库,这些库是从它们的原生代码分叉而来的,如果你已经安装了libz3或者libVEX,你肯定不想用我们的来覆盖官方的共享对象。一般情况下,不要指望能解决在virtualenv之外安装angr的问题。
依赖关系
所有的python依赖项都应该由pip和setup.py处理。但是,你需要构建一些C语言,所以你需要一个好的构建环境以及python开发头文件。在依赖项安装过程的某个时刻,你会安装python库cffi,但是(至少在linux上)除非你安装了操作系统的libffi包,否则它不会运行。
在Ubuntu,你需要:
sudo apt-get install python3-dev libffi-dev build-essential virtualenvwrapper
如果你正在尝试angr Management,你还需要PySide 2 支持
大多数操作系统,*nix系统
mkvirtualenv --python=$(which python3) angr && pip install angr
上面命令应该足够安装angr了,因为angr发布在python包索引上。
Fish(shell)用户可以使用virtualfish或者virtualenv包:
vf new angr && vf activate angr && pip install angr
如果失败了,你可以从github安装下面的仓库
https://github.com/angr:
- archinfo
- pyvex
- claripy
- cle
- angr
Mac OS X
pip install angr
应该有用,但是会有一些警告。
angr需要unicorn库,(在撰写本文时)pip必须在macOS上从源代码构建这个库,即使二进制发行版(“轮子”)存在于其它平台。从源代码构建unicorn需要python2,你virtualenv里python是python3,所以会失败。如果你在使用pip install angr时遇到错误,可能需要先单独安装unicorn,将它指向python2.
UNICORN_QEMU_FLAGS="--python=/path/to/python2" pip install unicorn # Python 2 is probably /usr/bin/python on your macOS system
然后重试
pip install angr
如果这还不管用,并且用Clang运行到了一个破损的构建脚本,尝试使用GCC
brew install gcc
CC=/usr/local/bin/gcc-8 UNICORN_QEMU_FLAGS="--python=/path/to/python2" pip install unicorn # As of this writing, brew install gcc gives you gcc-8
pip install angr
安装angr后,需要修复一些angr本地库的共享库路径。
激活虚拟环境然后执行以下代码,angry -dev repo里提供了一个脚本
PYVEX=`python3 -c 'import pyvex; print(pyvex.__path__[0])'`
UNICORN=`python3 -c 'import unicorn; print(unicorn.__path__[0])'`
ANGR=`python3 -c 'import angr; print(angr.__path__[0])'`
install_name_tool -change libunicorn.1.dylib "$UNICORN"/lib/libunicorn.dylib "$ANGR"/lib/angr_native.dylib
install_name_tool -change libpyvex.dylib "$PYVEX"/lib/libpyvex.dylib "$ANGR"/lib/angr_native.dylib
Windows
一样,强烈推荐virtualenv,你可以使用virtualenvwin或者virtualenv。
在Windows上,可以直接
pip install angr
不需要构建任何C代码
Nix/NixOS
省略
开发安装
angr-dev有一个特殊的仓库,带有脚本,可以让angr开发人员更轻松。你可以在开发模式下运行以下命令来设置angr:
git clone https://github.com/angr/angr-dev
cd angr-dev
./setup.sh -i -e angr
这会创建一个virtualenv(-e angr),检查你可能需要的任何依赖项,克隆所有仓库并以编辑模式安装它们。setup.sh甚至能为你创建一个PyPy virtualenv(把-e换为-p),从而显著提高性能和降低内存消耗。
你可以就地直接新建分支/编辑/重新编译各个模块,它们将自动反应在你的虚拟环境中
在Windows上安装开发环境
angr-dev仓库有个setup.bat脚本,它创建了与上面相同的设置,但没有setup.sh那么神奇。因为我们将构建C代码,所以你必须在VS的develop命令行提示符中。如果你在使用64位python解释器,你也要使用64位构建工具。
VsDevCmd.bat -arch=x64
pip install virtualenv
git clone https://github.com/angr/angr-dev
cd angr-dev
virtualenv -p "C:\Path\To\python3\python.exe" env
env\Scripts\activate
setup.bat
你也可以用virtualenvwrapper-win包代替上面的virtualenv,以获得更流畅的体验
Docker安装
方便起见,我们提供了一个Docker映像,保证99%能工作。你可以通过docker安装:
# install docker
curl -sSL https://get.docker.com/ | sudo sh
# pull the docker image
sudo docker pull angr/angr
# run it
sudo docker run -it angr/angr
文件进出docker的同步留给用户联系(提示:检查docker run -v)
修改angr容器
你可能会发现自己需要通过apt安装额外的包,容器的普通版本没有安装sudo包,意味着容器中的默认用户无法升级安装额外包的权限
为了克服这个障碍,使用下面的docker命令授予自己根访问权限:
# assuming the docker container is running
# with the name "angr" and the instance is
# running in the background.
docker exec -ti -u root angr bash
故障排除
省略