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) でも,問題を解決できるかもしれません.

results matching ""

    No results matching ""