Zelos (Zeropoint Emulated Lightweight Operating System) is a python-based binary emulation platform. One use of zelos is to quickly assess the dynamic behavior of binaries via command-line or python scripts. All syscalls are emulated to isolate the target binary. Linux x86_64 (32- and 64-bit), ARM and MIPS binaries are supported. Unicorn provides CPU emulation.
Full documentation is available here.
Installation
Use the package manager pip to install zelos.
pip install zelos
Basic Usage
Command-line
To emulate a binary with default options:
$ zelos my_binary
-v
flag:$ zelos -v my_binary
--fasttrace
:$ zelos -v --fasttrace my_binary
--strace
flag:$ zelos --strace path/to/file my_binary
$ zelos my_binary arg1 arg2
Programmatic
import zelos
z = zelos.Zelos("my_binary")
z.start(timeout=3)
Contributing
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
Please make sure to update tests as appropriate.
Local Development Environment
First, create a new python virtual environment. This will ensure no package version conflicts arise:
$ python3 -m venv ~/.venv/zelos
$ source ~/.venv/zelos/bin/activate
zelos
directory:(zelos) $ git clone git@github.com:zeropointdynamics/zelos.git
(zelos) $ cd zelos
import zelos
available, and any local changes to zelos will be effective immediately:(zelos) $ pip install -e '.[dev]'
(zelos) $ pytest
(zelos) $ cd docs
(zelos) $ make html
docs/_build/html/
.Install zelos pre-commit hooks to ensure code style compliance:
(zelos) $ pre-commit install
(zelos) $ pre-commit run --all-files
Windows Development:
Commands vary slightly on Windows:
C:\> python3 -m venv zelos_venv
C:\> zelos_venv\Scripts\activate.bat
(zelos) C:\> pip install -e .[dev]