第七章 ARM 反汇编基础(一)(Android(安卓)与 ARM 处理器)
16lz
2021-12-04
文章目录
- ARM 反汇编基础
- Android 与 ARM 处理器
- ARM 处理器架构概述
- Cortex
- Android 支持的处理器架构
ARM 反汇编基础
- 学习目的:掌握原生程序逆向技术
Android 与 ARM 处理器
ARM 处理器架构概述
- ARM:Advanced RISC Machine
- 一家嵌入式处理器提供商
- 一种处理器架构
- 一套完整的处理器指令集
- 为满足不同环境需求,ARM 公司推出了多种基于通用架构的处理器,分为 Classic、Embedded、Application 三大类
- Classic:经典系列,早先基于 ARM 架构的处理器以数字命名,此命名方式从 ARM1 延续到 ARM11
- ARM11 后不再采用数字命名处理器的版本,开始采用“Cortex”命名
Cortex
- Cortex 处理器分为三个系列:Cortex-A、Cortex-M、Cortex-R
- Cortex-A:广发应用于智能手机、上网本、电子书、数字电视等常见电子设备。属于 ARMv7-A 架构,Android 和其他主流手机系统大都使用它。市场上大部分使用 32 位 CPU 的 Android 手机采用的处理器都是 Cortex-A15 和 Cortex-A17
- ARMv8
- 2011 年 11 月发布的新一代处理器架构
- 第一款使用 ARMv8-A 架构的 ARM 内核是 Cortex-A32,仍是 32 位 CPU
- 从 Cortex-A35 起,所有 CPU 都是 64 位
- 目前主流的 Android 手机都配置了八核的 64 位 ARM 处理器
Android 支持的处理器架构
- Android 平台对处理器架构的支持,可通过 Android NDK 对处理器的支持来了解
- Android 系统支持 armeabi、armeabiv7-a、arm64-v8a、x86、x86-64、MIPS 等多种架构的处理器
- x86/x86-64 与 MIPS 系统的处理器在 Android 设备上占用率较低,故只讨论与 ARM 相关的部分
- Android 对 ARM 支持的调整与 ARM 的几次架构调整在时间上对应
- ARM 芯片经历的几次大规模架构调整:
- ARMv5TE:兼容 ARMv4 使用的 32 位 ARM 指令集,以及 ARMv4T 增加的 16 位 Thumb 指令集,支持在 ARM 和 Thumb 模式间切换
- ARMv6:对内存访问的架构有所调整,支持 SIMD 指令,增加可选的 Thumb-2 指令集
- ARMv7-A:将 ARMv6 时代可选的 Thumb-2 指令集变成必选项,支持 NEON 指令,代表芯片有 Cortex-A8/A9/A15/A17
- ARMv8-A:支持 64 位的 AArch64 和 AArch32 两种架构,其中,AArch32 和 ARMv7-A 架构基本一样,AArch64 是全新的 64 位架构
- 整个 ARM 架构的变化过程如图:
- Android 系统从 1.5 版本开始,正式加入 Android NDK 的开发支持,发布了 Android NDK 1.0(首个发布版本只支持 ARM 处理器)
- Android 1.6 发布时发布了 Android NDK 2.0
- 查看 Android 源码的 dalvik/vm/mterp 目录可发现:
- Android 1.6 只支持 ARMv4 和 ARMv5TE 指令集
- Android 2.0 增加了对 ARM VFP、ARMv6、ARMv6T2 指令集的支持,Android NDK 指定的 armeabi 指令集实际上对应的是 ARMv6 之前所支持的指令集
- Android 2.2 增加了对 ARMv7-A 指令集的支持,而其所对应的是 Android NDK 指定的 armeabiv7-a 指令集
- 之后一直到 Android 4.4 发布的这段时间里,ARM 平台只支持 armeabi 和 armeabiv7-a 两种架构
- 查看 Android 4.0 以后版本的源码,可从底层的设备驱动与上层的开发规范中发现:Android 支持 64 位架构的 ARM 处理器,但当时无论是 Dalvik 虚拟机还是 ART 虚拟机,都只支持 32 位的代码
- Android 5.0 时代,ART 虚拟机取代 Dalvik 虚拟机,支持 64 位程序运行,Android NDK 正式增加了对 arm64-v8a 指令集的支持,该指令集对应的就是 ARMv8-A 处理器架构
更多相关文章
- Hero,flytouch(飞触),智器等android系统pad和phone连接adhoc无线
- Android测试驱动开发实践1
- iOS、Android、WebOS系统体系架构的比较
- Apple IOS、Android、WebOS系统体系架构对比
- 开源 Android(安卓)开发平台 Rexsee 开发团队专访
- Android层次架构
- Android测试驱动开发实践1
- Anbox:容器中的_Android
- Android平台架构及特性(1)