Android逆向-2.ARM汇编与寄存器

ARM处理器:

ARM状态(执行32位对齐指令的ARM指令)
Thumb状态(执行16位对齐的Thumb指令)

如何查看是什么指令多少位数?

IDA静态分析在反汇编窗口----->随便选中条语句----->然后到Hex View窗口查看
Hex选中4个就是ARM指令,选中2个就是Thumb指令
在这里插入图片描述
在这里插入图片描述

ARM处理器支持7种运行模式:

  • usr(用户模式):ARM处理器正常程序执行模式
  • fiq(快速中断模式):用于高速数据传输或通道处理
  • irq(外部中断模式):用于通用的中断处理
  • svc(管理模式):操作系统使用的保护模式
  • abt (数据访问终止模式): 当数据或指令预取终止时进入该模式,可用于虚拟存储及存储保护。
  • sys(系统模式): 运行具有特权的操作系统任务。
  • und(未定义指令中止模式):当未定义的指令执行时进入该模式,可用于支持硬件协处理器的软件仿真。

逆向分析和修改汇编指令:

赋值、跳转、算术运算、移位运算、堆栈操作、内存读写、函数调用

分析和修改汇编指令需要关心的寄存器:

  • 用户模式(usr):
    不分组寄存器(R0-R7)
    分组寄存器(R8-R14)
  • 传递参数与返回值(R0-R3)
  • 保存栈顶地址(R13/SP)
  • 保存函数的返回地址(R14/LR)
  • 程序计数器R15(PC):控制程序流程
  • 状态寄存器CPSR:判断是Thumb还是ARM指令

猜你喜欢

转载自blog.csdn.net/Maggie_up/article/details/84107023