angrのインストール
angrはPythonのライブラリです.そのため,angrを使うためには,Python環境上にangrをインストールする必要があります. angrはPython 2用にビルドされています:Py3kサポートはいずれ実現可能ですが,私たちはいますぐその仕事に取り掛かることに躊躇しています(プルリクエストを歓迎します!).
私たちはangrのインストールと利用にpython virtual environmentを使うことを強く勧めます. いくつかのangr依存関係 (z3, pyvex) は,そのオリジナルからフォークされたネイティブコードのライブラリを必要とします.既にlibz3またはlibVEXをインストール済みなら,公式の共有ライブラリを上書きしたくないですよね.通例,virtualenv以外の環境へのangrのインストールから生じる問題のサポートを期待しないでください.
依存関係
Pythonの依存関係はすべてpipまたはsetup.pyスクリプトで解決する必要があります. しかしながら,この作業では,Cソースコードをビルドする必要があるので,よいPython環境だけでなく,Python開発用ヘッダファイルが必要となるでしょう.
依存関係のインストールプロセスの最中,Pythonライブラリcffiがインストールされますが,オペレーティングシステム公式のlibffiパッケージをインストールしない限り,(少なくともLinuxでは)それが実行されることはありません.
Ubuntuでは,次のコマンドがお望みに沿うでしょう:sudo apt-get install python-dev libffi-dev build-essential virtualenvwrapper
.
angr-managementを試したければsudo apt-get install libqt4-default graphviz-dev
も必要です.
ほとんどのオペレーティングシステム,すべての*nixシステム
angrはPython Package Indexで公開されているので,ほとんどの場合,mkvirtualenv angr && pip install angr
によってangrをインストールできるはずです.
Fish (shell) ユーザーはまた,virtualfishあるいはvirtualenvのパッケージを利用できます.
vf new angr && vf activate angr && pip install angr
失敗する場合,https://github.com/angr から順番に下記のリポジトリ(およびそのrequirements.txtに記載された依存関係)をインストールすることで,angrをインストールできます.
Mac OS X
pip install angr
を唱える前に,私たちのフォーク版z3をpip install -I --no-use-wheel angr-only-z3-custom
のようにリビルドする必要があります.
Windows
angrをpipからwindows環境にインストールすることはできません.個別にコンポーネントをインストールする必要があります.
CapstoneをWindowsにインストールするのは困難です. wheelを指定してインストールすることになりますが,しばしば"capstone"以外の名前でインストールされることがあります.その場合はcapstoneの記載をangrとarchinfoのrequirements.txtから除去してください.
もしあなたがビルド環境に習熟しているなら,windowsでも問題なくZ3をコンパイルすることができます. そうでなければ,インターネットのどこかからwheelをダウンロードしてくるべきです. 私たちのビルド済みwheelファイルはhttps://github.com/Owlz/angr-Windowsからダウンロード可能です.
それでもz3をソースからビルドする場合は,浮動小数点のサポートを含むz3のunstableブランチを利用してください.
さらに,環境設定にZ3PATH=path/to/libz3.dll
を加えてください.
開発版インストール
私たちはangr開発者たちの生活にゆとりを持たせるため,リポジトリとスクリプトを用意しました. angr開発版は次のようにセットアップできます:
git clone https://github.com/angr/angr-dev
cd angr-dev
mkvirtualenv angr
./setup.sh
この手順は,全リポジトリをクローンしたのち編集可能なモードでインストールします.
setup.sh
は,さらに,PyPy virtualenvを作成し,パフォーマンスの向上とメモリ使用量の削減を実現します.
さまざまなモジュールについて,所定の位置でブランチ作成・編集・再コンパイルすることができますが,その結果は自動的に仮想環境に反映されます.
Dockerインストール
私たちは利便性のため,十中八九動作するDockerのイメージを提供しています. Dockerは次のようにインストールできます:
# dockerのインストール
curl -sSL https://get.docker.com/ | sudo sh
# Dockerイメージのpull
sudo docker pull angr/angr
# 実行
sudo docker run -it angr/angr
Docker内外とのファイル同期はユーザーへの課題として残されています(ヒント:docker -v
を確認してください).
トラブルシューティング
libgomp.so.1: version GOMP_4.0 not found
このエラーはコンパイル済みangr-only-z3-custom
のバージョンとインストールされたlibgomp
のバージョンの不適合を意味します.次のようにZ3のコンパイルが必要となります:
pip install -I --no-use-wheel angr-only-z3-custom
Can't import mulpyplexer
mulpyplexerのインストールに問題が発生することがあります.
pip install --upgrade 'git+https://github.com/zardus/mulpyplexer'
が修正してくれるはずです.
Can't import angr because of capstone
angrで利用可能な状態でcapstoneがインストールされないことがあります.capstoneを再インストールしてこの問題を解決する,よい機会です:
pip install -I --no-use-wheel capstone
ImportError due to failure in loading capstone while importing angr
virtualenvまたはvirtualenvwrapper環境で,pipを用いてcapstone 3.0.4をインストールする際の既知の問題です.何人かのユーザーから,ネイティブなPython環境でも同様のバグが報告されています(Github上のバグレポートの議論を参照してください).
仮想環境で,capsyoneのPythonファイルが /home/<username>/.virtualenvs/<virtualenv>/lib/python2.7/site-packages/capstone/*.py(c)
にインストールされている場合,capstoneのライブラリファイルは/home/<username>/.virtualenvs/<virtualenv>/lib/python2.7/site-packages/home/<username>/.virtualenvs/<virtualenv>/lib/python2.7/site-packages/capstone/libcapstone.so
にあるはずです.
ネイティブ環境で,capstoneのPythonファイルが/usr/local/lib/python2.7/dist-packages/capstone/*.py(c)
にインストールされている場合,capstoneのライブラリファイルは/usr/local/lib/python2.7/dist-packages/usr/lib/python2.7/dist-packages/capstone/libcapstone.so
にあるはずです.
libcapstone.so
をPythonファイルと同じディレクトリに移動することで,問題を解決できるでしょう.
Claripyとz3
Z3のコンパイルは少しばかり奇妙です.理由なくビルドに失敗することもあります.いくつかのファイルやディレクトリに欠けていて,ファイルを作成できないのです.ビルドに再挑戦してください:
pip install -I --no-use-wheel angr-only-z3-custom
No such file or directory: 'pyvex_c'
Ubuntu 12.04を使っていますか? もしそうなら,アップグレードしてください!
pipのアップグレード (pip install -U pip
) でも,問題を解決できるかもしれません.