
包括的なバイナリエミュレーションとインストルメンテーションプラットフォーム。
Zelos(Zeropoint Emulated Lightweight Operating System)は、Pythonベースのバイナリエミュレーションプラットフォームです。Zelosの用途の1つは、コマンドラインやPythonスクリプトを使用して、バイナリの動的な挙動を迅速に評価することです。すべてのシステムコールはエミュレートされ、ターゲットのバイナリを隔離します。サポートされているアーキテクチャは、Linux x86_64(32ビットおよび64ビット)、ARM、MIPSです。UnicornがCPUエミュレーションを提供します。

パッケージマネージャのpipを使用してzelosをインストールします。
pip install zelos
デフォルトオプションでバイナリをエミュレートするには:
$ zelos my_binary
実行されている命令を表示するには、--instフラグを追加します:
$ zelos --inst my_binary
すべての実行ではなく、各命令が初めて実行されたときだけを表示するには、--fasttraceを使用します:
$ zelos --inst --fasttrace my_binary
デフォルトでは、システムコールはstdoutに出力されます。代わりにファイルに書き込むには、--trace_fileフラグを使用します:
$ zelos --trace_file path/to/file my_binary
バイナリ名の後に任意のコマンドライン引数を指定します:
$ zelos my_binary arg1 arg2
import zelos
z = zelos.Zelos("my_binary")
z.start(timeout=3)
Zelosは、ファーストパーティおよびサードパーティのプラグインをサポートしています。これまでの注目すべきプラグイン:
zelosの実行トレースをハイライトし、命令レベルでコメントを追加します。zelosでシンボリック実行を可能にします。プルリクエストは歓迎します。大きな変更については、まずissueを開いて変更内容を議論してください。
必要に応じてテストも更新してください。
まず、新しいPython仮想環境を作成します。これにより、パッケージのバージョン競合を防げます:
$ python3 -m venv ~/.venv/zelos
$ source ~/.venv/zelos/bin/activate
レポジトリをクローンしてzelosディレクトリに移動します:
(zelos) $ git clone [email protected]:zeropointdynamics/zelos.git
(zelos) $ cd zelos
仮想環境にzelosの編集可能バージョンをインストールします。これにより、import zelosが利用可能になり、ローカルでのzelosへの変更が即座に反映されます:
(zelos) $ pip install -e '.[dev]'
この時点で、テストがパスし、ドキュメントがビルドされるはずです:
(zelos) $ pytest
(zelos) $ cd docs
(zelos) $ make html
ビルドされたドキュメントはdocs/_build/html/にあります。
コードスタイルの準拠を確保するために、zelosのpre-commitフックをインストールします:
(zelos) $ pre-commit install
各コミット時に自動的に実行されるだけでなく、任意のタイミングで以下のコマンドで実行できます:
(zelos) $ pre-commit run --all-files
Windowsではコマンドが若干異なります:
C:\> python3 -m venv zelos_venv
C:\> zelos_venv\Scripts\activate.bat
(zelos) C:\> pip install -e .[dev]