Zelos(Zeropoint Emulated Lightweight Operating System 的缩写,即零起点模拟轻量级操作系统)是一个基于 Python 的二进制模拟平台。其用途之一是通过命令行或 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]