内存取证原理与实践
上QQ阅读APP看书,第一时间看更新

2.4 ARM架构

2.4.1 ARM架构简介

ARM(Advanced RISC Machine)即高级精简指令集机器,在嵌入式系统设计中被广泛使用。ARM处理器具有低成本、高性能和低耗电的特性,非常适用于移动通信领域,在多年发展过程中,在智能手机领域取得了一枝独秀的地位,目前几乎所有的智能手机都采用了ARM架构。

与Intel的X86架构相比,ARM架构进行了大幅度的简化,使整个处理器拥有小体积、高效能的特性。X86架构的PC计算机使用“桥”(南桥、北桥)的方式与硬盘、内存等扩展设备进行连接,因此很容易实现增加内存、硬盘等性能扩展。采用ARM结构的系统,一般不考虑扩展,在产品设计时就会设定好内存及存储的容量,通过系统单芯片(SoC,System on a Chip)的方式,将PC架构下需要专门部件(如GPU、I/O控制、调制解调器等)完成的功能高度整合在单个芯片部件上。

操作系统方面,ARM系统大部分采用了基于Linux内核的操作系统,而且几乎所有的硬件系统都需要单独构建自己的系统,以致于与其他系统不能兼容,应用软件不能方便移植,这一直制约了ARM系统的发展和应用。Google开发了Android系统并开放后,使基于ARM架构的系统有了统一、开放、免费的操作系统,为ARM的发展提供了强大的支持和动力。

2.4.2 ARM内存管理和地址转换

ARM架构下也采用了虚拟内存管理技术,在CPU核和内存之间的地址总线上增加了一层,利用MMU(Memory Managage Unit)存储管理单元和TLB实现虚拟存储地址(VA)到物理地址(PA)的映射,并控制存储空间访问权限和设置存储空间的缓冲特性等。

ARM架构下,ARM公司只做ARM的内核,其他公司获得ARM内核后会自行生产自己的SoC芯片,因此不同厂家生产的芯片,从CPU到芯片的地址重映射是不同的。所以,ARM架构下的内存取证分析,首先需要了解SoC芯片上资源地址空间的划分,这一划分对于固定的架构一般是不会变化的,需要参考具体SoC芯片的设计说明书。

ARM MMU硬件也是通过页表机制将虚拟地址翻译成对应物理地址的,处理器通过查找页表中的描述符来获取虚拟地址对应的物理地址[5]

ARM MMU硬件采用两级页表结构:一级页表(L1)和二级页表(L2),页表格式如表2-3所示。

L1页表只有一个主页表,也称为L1主页表(L1 MasterPage Table)或者段页表(Section Page Table)。使用虚拟地址(VA)的高12 bit位索引该表,所以该表有212(4 kB)个页表项(PTE,Page Table Entry),每个页表项4 byte,一共需要占用内存16 kB。

有两种类型的L2页表,分别是L2粗页表(Coarse Page Table)和L2细页表(Fine Page Table)。对于L2粗页表,使用VA的次高8 bit索引该表,所以该表有28(256)个页表项(PTE,Page Table Entry),每个页表项4 byte,一共需要占用内存1 kB。对于L2细页表,使用VA的次高10 bit索引该表,所以该表有210(1024)个页表项(PTE),每个页表项4 byte,一共需要占用内存4 kB。

表2-3 页表地址格式

图2-8是使用L1主页表和L2粗页表实现的一个简单虚拟地址到物理地址(PA)的转化示意。

图2-8 L1主页表和L2粗页表的地址转换