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指令