【Android 逆向】ARM CPU 架构体系 ( ARM 内存模型 | ARM 架构堆的实现 | ARM 架构栈的实现 )

简介: 【Android 逆向】ARM CPU 架构体系 ( ARM 内存模型 | ARM 架构堆的实现 | ARM 架构栈的实现 )

文章目录

一、ARM 内存模型

二、ARM 架构堆的实现

三、ARM 架构栈的实现





一、ARM 内存模型


ARM 架构体系中 , CPU 直接访问内存 , 控制内存中的状态和数据 , 内存中映射外部设备 , 外设通过内存中的状态数据改变外设内部的情况 ;

如 : CPU 读取硬盘数据 , 首先访问内存中的对应内存块 A , 内存块向硬盘控制器发送命令 , 硬盘控制器将数据取出放到另外一块内存 B 中 , 通过内存状态转换 , 告知内存已经读取完毕 , CPU 可以直接访问内存中内存块 B 中的数据 ;

所有的外设基本都有一块属于自己的内存 , 有的时在内存中映射的 , 有的自带内存 , 如显卡显存 ;


image.png






二、ARM 架构堆的实现


应用程序 向 系统 请求内存 , 系统通过系统调用 , 分配内存 , 内存分配完毕后 , 返回内存的首地址给应用程序 ;


申请完内存后 , 需要 free 释放内存 , 否则会造成泄漏 ;


image.png






三、ARM 架构栈的实现


如果参数小于等于 3 33 个 , 则只需要使用 R0 , R1, R2 这 3 33 个寄存器存放参数 , 这 3 33 个寄存器变相的称为了栈 ;


如果参数大于等于 4 44 个 , 则 R3 寄存器记录栈地址 ( 栈的起始位置 ) , 如下图所示 ;


在 ARM 中 , 栈指针只会 push 到寄存器中 , 但是不使用 ; 使用到栈中的参数时 , 会使用变量寄存器将栈地址保存起来 , 使用变量寄存器中的地址 ;


image.png

目录
相关文章
|
24天前
|
前端开发 JavaScript 测试技术
android做中大型项目完美的架构模式是什么?是MVVM吗?如果不是,是什么?
android做中大型项目完美的架构模式是什么?是MVVM吗?如果不是,是什么?
71 2
|
24天前
|
存储 前端开发 Java
Android MVVM架构模式下如何避免内存泄漏
Android采用MVVM架构开发项目,如何避免内存泄漏风险?怎样避免内存泄漏?
76 1
|
2月前
|
IDE Android开发 iOS开发
深入解析Android与iOS的系统架构及开发环境差异
本文旨在探讨Android和iOS两大主流移动操作系统在系统架构、开发环境和用户体验方面的显著差异。通过对比分析,我们将揭示这两种系统在设计理念、技术实现以及市场策略上的不同路径,帮助开发者更好地理解其特点,从而做出更合适的开发决策。
126 2
|
5天前
|
前端开发 JavaScript 测试技术
Android适合构建中大型项目的架构模式全面对比
本系列教程详细讲解 Kotlin 语法,适合需要深入了解 Kotlin 的开发者。快速学习 Kotlin 语法的小伙伴可以查看“简洁”系列教程。此外,教程还对比了多种适合中大型项目的架构模式,如 MVVM、MVP、MVI、Clean Architecture 和 Flux/Redux,帮助开发者根据项目需求选择合适的架构。
15 3
|
6天前
|
前端开发 JavaScript 测试技术
Android适合构建中大型项目的架构模式全面对比
Android适合构建中大型项目的架构模式全面对比
17 2
|
7天前
|
存储 前端开发 测试技术
Android kotlin MVVM 架构简单示例入门
Android kotlin MVVM 架构简单示例入门
16 1
|
11天前
|
Docker 容器
docker:记录如何在x86架构上构造和使用arm架构的镜像
为了实现国产化适配,需将原x86平台上的Docker镜像转换为适用于ARM平台的镜像。本文介绍了如何配置Docker buildx环境,包括检查Docker版本、安装buildx插件、启用实验性功能及构建多平台镜像的具体步骤。通过这些操作,可以在x86平台上成功构建并运行ARM64镜像,实现跨平台的应用部署。
57 2
|
14天前
|
编解码 弹性计算 应用服务中间件
阿里云服务器Arm计算架构解析:Arm计算架构云服务器租用收费标准价格参考
阿里云服务器架构分为X86计算、Arm计算、高性能计算等多种架构,其中Arm计算架构以其低功耗、高效率的特点受到广泛关注。本文将深入解析阿里云Arm计算架构云服务器的技术特点、适用场景以及包年包月与按量付费的收费标准与最新活动价格情况,以供选择参考。
|
27天前
|
机器学习/深度学习 弹性计算 编解码
阿里云服务器计算架构X86/ARM/GPU/FPGA/ASIC/裸金属/超级计算集群有啥区别?
阿里云服务器ECS提供了多种计算架构,包括X86、ARM、GPU/FPGA/ASIC、弹性裸金属服务器及超级计算集群。X86架构常见且通用,适合大多数应用场景;ARM架构具备低功耗优势,适用于长期运行环境;GPU/FPGA/ASIC则针对深度学习、科学计算、视频处理等高性能需求;弹性裸金属服务器与超级计算集群则分别提供物理机级别的性能和高速RDMA互联,满足高性能计算和大规模训练需求。
|
24天前
|
前端开发 Java 测试技术
android MVP契约类架构模式与MVVM架构模式,哪种架构模式更好?
android MVP契约类架构模式与MVVM架构模式,哪种架构模式更好?
14 2

热门文章

最新文章