工具
avatar² 多目标固件动态分析编排框架
由 EURECOM S3 小组开发的 Python 框架,可协调模拟器、调试器和物理设备,对嵌入式固件进行动态分析。分析脚本先声明目标(如修改版 QEMU、PANDA、Unicorn、gdbserver,或 OpenOCD、J-Link 调试探针),再定义内存布局(其中的内存区间可把访问从一个目标转发到另一个目标)和执行计划。执行过程以及寄存器、内存状态可在目标之间转移,从而让固件在模拟器中运行,同时把外设访问转发给真实设备。
使用条件与局限
- 审阅时最新版本为 1.4.7,于 2022-02-10 上传到 PyPI,对应标签 v1.4.7;GitHub 上没有发布页面。所审阅的 main 分支提交(2024-10-23)比该标签多九个提交,新增了 ARMv7-M 中断转发和硬件运行器插件,并将 Unicorn 固定为 2.0.1.post1。
- 核心部分可用 pip 安装;CI 在 Ubuntu 20.04 上测试 Python 3.7-3.9。目标端点需单独构建:python -m avatar2.installer 或 targets/build_*.sh 脚本会构建 avatar-qemu 分支和 PANDA,构建脚本只为 Ubuntu 20.04 提供;这些脚本会把 restricted 软件源的 deb-src 条目写入 /etc/apt/sources.list,因此 README 建议在虚拟机或容器中构建。另有 Dockerfile 生成脚本,可按所选端点构建镜像。
- 分析需要使用者自有的固件镜像;混合部署还需要可通过 gdbserver、OpenOCD 脚本或 Segger J-Link 探针访问的物理设备。架构定义涵盖 ARM(包括 Cortex-M3 和大端变体)、MIPS 以及 x86/x86-64。内存布局、转发规则和执行计划都由分析者用 Python 编写。
- 采用 Apache-2.0 许可;avatar-qemu 和 PANDA 位于独立仓库,各有其许可。README 列出了介绍、使用或扩展该框架的研究论文,其中的结果不代表当前版本的特性。本次未构建任何端点,也未运行任何固件。
关于此条目
- 类型
- 工具
- 类别
- 固件工具
- 关联
- 基础工具
- 目标
- 固件
来源复核于
说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。
一手来源
- README.md GitHub · avatartwo/avatar2 · 修订 56a90cf
- handbook/0x01_intro.md GitHub · avatartwo/avatar2 · 修订 56a90cf
- handbook/0x02_targets.md#L67-L155 GitHub · avatartwo/avatar2 · 修订 56a90cf
- handbook/0x03_memory.md#L31-L45 GitHub · avatartwo/avatar2 · 修订 56a90cf
- handbook/0x04_execution.md#L113-L165 GitHub · avatartwo/avatar2 · 修订 56a90cf
- avatar2/targets GitHub · avatartwo/avatar2 · 修订 56a90cf
- avatar2/archs GitHub · avatartwo/avatar2 · 修订 56a90cf
- setup.py GitHub · avatartwo/avatar2 · 修订 56a90cf
- .github/workflows/continuous_integration.yml GitHub · avatartwo/avatar2 · 修订 56a90cf
- targets/build_qemu.sh GitHub · avatartwo/avatar2 · 修订 56a90cf
- CHANGELOG.md GitHub · avatartwo/avatar2 · 修订 56a90cf
- LICENSE GitHub · avatartwo/avatar2 · 修订 56a90cf
- https://pypi.org/project/avatar2/1.4.7/