【Android 逆向】ARM CPU 架构体系 ( ARM 处理器工作模式 | ARM 架构模型 )

举报
韩曙亮 发表于 2022/01/10 23:41:25 2022/01/10
【摘要】 文章目录 一、ARM 处理器工作模式二、ARM 架构模型 一、ARM 处理器工作模式 参考 【嵌入式开发】ARM 处理器工作模式 及 修改方法 ( 处理器模式 | ...





一、ARM 处理器工作模式



参考 【嵌入式开发】ARM 处理器工作模式 及 修改方法 ( 处理器模式 | 设置处理器模式 | 程序状态字寄存器 CPSR SPSR | 模式设置代码编写 | 设置 svc 模式 ) 博客 , ARM 处理器有 7 7 7 种工作模式 ;

ARM 处理器的 七种 工作模式 :

  • 1.User ( 用户模式 usr ) : 普通的应用运行的模式 ;
  • 2.FIQ ( 快速中断模式 fiq ) : 该模式下支持数据的高速传输 ;
  • 3.IRQ ( 普通中断模式 irq ) : 该模式常用于处理普通的中断 ;
  • 4.Supervisor ( 管理模式 svc ) : 操作系统使用的一种保护模式 , 本节 BootLoader 就是需要设置这种 svc 模式;
  • 5.Abort ( 终止模式 abt ) : 实现虚拟内存 和 存储器保护 ;
  • 6.Undefined ( 未定义模式 und ) : 硬件协处理器 的 软件仿真支持, 当执行的指令***处理器不支持***, 那么会进入该模式;
  • 7.System ( 系统模式 ) : 该模式用于运行具有特权的操作系统任务, ARMv4 以上的架构才有;




二、ARM 架构模型



ARM 架构中寄存器数量很多 , 有 16 16 16 个 ;

另外多了 标志寄存器 CPSR , 程序状态寄存器 SPSR ;

程序状态寄存器 SPSR 在中断模式下使用 ;


R0 ~ R3 这 4 4 4 个寄存器是参数寄存器 ;

x86 架构中 , 参数传递都是通过堆栈传递的 ;

ARM 架构中 , 如果参数小于 4 4 4 个参数 , 传输传递是通过寄存器传递的 , 如果大于等于 4 4 4 个参数 , 则 R3 寄存器记录一个栈地址 , 对应的栈中就后续参数值 ;


R4 ~ R12 这 8 8 8 个寄存器是变量寄存器 ,

在这里插入图片描述

ARM 中有 37 37 37 个寄存器 , R0 ~ R7 是所有模式通用的寄存器 ;

上述 7 7 7 种模式下 , 寄存器的的个数与种类都是不同的 ;

每个模式对应的寄存器参考 :

在这里插入图片描述

如果不做嵌入式开发 , 用户模式 和 系统模式 是主要需要学习的模式 , Android 逆向中 , 主要涉及这两个模式 ;


R13 ( SP ) 是堆栈指针寄存器 ;

R14 ( LR ) 是返回地址寄存器 ;

R15 ( PC ) 是指令寄存器 , 指向下一条要执行的指令 ;


Android 逆向中使用到的寄存器有

  • 参数寄存器 R0 ~ R3
  • 变量寄存器 R4 ~ R12
  • 堆栈指针寄存器 R13 ( SP )
  • 返回地址寄存器 R14 ( LR )
  • 指令寄存器 R15 ( PC )
  • 标志寄存器 CPSR

文章来源: hanshuliang.blog.csdn.net,作者:韩曙亮,版权归原作者所有,如需转载,请联系作者。

原文链接:hanshuliang.blog.csdn.net/article/details/120671081

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。