原文:https://github.com/avatartwo/avatar2/blob/master/handbook/0x01_intro.md
1.什么是Avatar
Avatar是一种协调框架,旨在支持嵌入式设备的动态分析。 Avatar²是该框架的第二代,该框架已经完全重新设计并重新实施,以提高表现,可用性和对高级功能的支持。
Avatar的设置由三部分组成:
·一个目标集
·内存布局
·执行计划
目标负责执行和分析固件代码。 尽管可以通过单个目标运行Avatar²,但大多数配置至少有两个(通常是仿真器和物理设备)。 内存布局描述了存储器的不同区域及其在系统中扮演的角色(例如,可以映射到外部外围设备或连接到文件的事实)以及存储器访问规则,即存储器读取和写入操作 需要在目标之间转发。 最后,执行计划告诉Avatar²固件的实际执行情况需要如何在目标之间进行划分以实现分析人员的目标。
如果这听起来很复杂,那是因为Avatar²是一个非常强大和灵活的框架,旨在适应不同的场景并支持复杂的配置。 然而,简单的Avatar²例子很容易编写和理解。
2.Avatar² 的架构
Avatar²的架构由4中不同类型的组件构成:Avatar对象自身, 一系列目标,协议,终端。Avatar是负责编排一组非空目标的根对象,它们依次使用多种协议与其相应的终端进行通信。这里终端可以是任何东西——例如模拟器,分析框架、物理设备。目标可以用提供给Avatar来执行给定分析任务的Python抽象代替。
为了清楚起见,下图给出了Avatar体系结构的示意图。
+------------------------------------------------------------------------------+
| AVATAR |
+----------------+--------------------------------------------+----------------+
| |
| |
+------+------+ +------+------+
| Target_1 | ... | Target_n |
+------+------+ +------+------+
| |
+-----------------------+ +-----------------------+
| | | | | |
+----+----+ +----+----+ +----+----+ +----+----+ +----+----+ +----+----+
|Execution| | Memory | |Register | ... |Execution| | Memory | |Register |
| Protocol| | Protocol| | Protocol| | Protocol| | Protocol| | Protocol|
+----+----+ +----+----+ +-----+---+ +----+----+ +----+----+ +-----+---+
| | | | | |
| | | | | |
| +------+------+ | | +------+------+ |
+----+ Endpoint_1 +-----+ ... +----+ Endpoint_n +-----+
+-------------+ +-------------+