Installing

原文

安装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

故障排除

省略

你可能感兴趣的:(Installing)