Tool
avatar²
Python framework from EURECOM's S3 group that orchestrates emulators, debuggers and physical devices for dynamic analysis of embedded firmware. An analysis script declares targets, such as a modified QEMU, PANDA, Unicorn, a gdbserver or an OpenOCD or J-Link debug probe, then a memory layout whose ranges can forward accesses from one target to another, and an execution plan. Execution and register or memory state can move between targets, so firmware can run in an emulator while its peripheral accesses go to the real device.
Requirements and limitations
- Latest release at review: 1.4.7, uploaded to PyPI on 2022-02-10 and tagged v1.4.7; GitHub lists no release pages. The reviewed main commit, from 2024-10-23, is nine commits ahead of that tag, adding ARMv7-M interrupt forwarding and hardware-runner plugins and pinning Unicorn 2.0.1.post1.
- The core installs with pip; CI tests Python 3.7-3.9 on Ubuntu 20.04. Target endpoints are separate: python -m avatar2.installer or the targets/build_*.sh scripts build the avatar-qemu fork and PANDA, with build scripts provided for Ubuntu 20.04 only, and the scripts add a restricted deb-src repository to /etc/apt/sources.list, so the README suggests a VM or container. A Dockerfile generator builds images with selected endpoints.
- An analysis needs the user's own firmware image and, for hybrid setups, the physical device reachable through a gdbserver, an OpenOCD script or a Segger J-Link probe. Architecture definitions cover ARM, including Cortex-M3 and big-endian variants, MIPS and x86/x86-64. The analyst writes the memory layout, forwarding rules and execution plan in Python.
- Apache-2.0; avatar-qemu and PANDA come from separate repositories with their own licenses. The README lists research publications that describe, use or extend the framework; their results are not properties of this release. No endpoints were built and no firmware was run.
About this entry
- Type
- Tool
- Category
- Firmware tools
- Relationship
- Foundation tool
- Targets
- Firmware
Sources reviewed
The description was reviewed against primary sources. This does not establish runtime testing, security auditing or verified compatibility.
Primary sources
- README.md GitHub · avatartwo/avatar2 · Revision 56a90cf
- handbook/0x01_intro.md GitHub · avatartwo/avatar2 · Revision 56a90cf
- handbook/0x02_targets.md#L67-L155 GitHub · avatartwo/avatar2 · Revision 56a90cf
- handbook/0x03_memory.md#L31-L45 GitHub · avatartwo/avatar2 · Revision 56a90cf
- handbook/0x04_execution.md#L113-L165 GitHub · avatartwo/avatar2 · Revision 56a90cf
- avatar2/targets GitHub · avatartwo/avatar2 · Revision 56a90cf
- avatar2/archs GitHub · avatartwo/avatar2 · Revision 56a90cf
- setup.py GitHub · avatartwo/avatar2 · Revision 56a90cf
- .github/workflows/continuous_integration.yml GitHub · avatartwo/avatar2 · Revision 56a90cf
- targets/build_qemu.sh GitHub · avatartwo/avatar2 · Revision 56a90cf
- CHANGELOG.md GitHub · avatartwo/avatar2 · Revision 56a90cf
- LICENSE GitHub · avatartwo/avatar2 · Revision 56a90cf
- https://pypi.org/project/avatar2/1.4.7/