文章目录

  • 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 架构的变化过程如图:
    第七章 ARM 反汇编基础(一)(Android 与 ARM 处理器)_第1张图片
  • 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 处理器架构

更多相关文章

  1. Android 源码分析-Dalvik 虚拟机创建过程
  2. Apple IOS、Android、WebOS系统体系架构对比
  3. Android层次架构
  4. Android平台架构及特性(1)
  5. android 程序工程架构
  6. android 系统架构介绍
  7. Android系统架构特点及优劣分析
  8. Android进阶 ——— Android官方架构组件Lifecycle
  9. Transformer Prime 变形平板:10 寸 Super IPS+ 屏幕、12 小时电力

随机推荐

  1. android学习日记:关于ActionBar和Menu
  2. Android开发小结Part5:Menu
  3. Handler 引起的内存泄漏
  4. Android图片加载库:最全面解析Glide用法
  5. 将android/ios屏幕投射到windows/mac的良
  6. android实现选择图片并压缩上传的功能
  7. Android开发——Android多进程以及使用场
  8. 鎹骞磋柂30涓囩殑Android绋嬪簭鍛樺
  9. Android Activity管理之Activity栈
  10. Android生存指南:解Bug策略和思路