- 对本书的赞誉
- 前言
- 基础篇
- 第 1 章 Android 中锁屏密码加密算法分析
- 第 2 章 Android 中 NDK 开发
- 第 3 章 Android 中开发与逆向常用命令总结
- 第 4 章 so 文件格式解析
- 第 5 章 AndroidManifest.xml 文件格式解析
- 第 6 章 resource.arsc 文件格式解析
- 第 7 章 dex 文件格式解析
- 防护篇
- 第 8 章 Android 应用安全防护的基本策略
- 第 9 章 Android 中常用权限分析
- 第 10 章 Android 中的 run-as 命令
- 第 11 章 Android 中的 allowBackup 属性
- 第 12 章 Android 中的签名机制
- 第 13 章 Android 应用加固原理
- 第 14 章 Android 中的 so 加固原理
- 工具篇
- 第 15 章 Android 逆向分析基础
- 第 16 章 反编译神器 apktool 和 Jadx
- 第 17 章 Hook 神器 Xposed
- 第 18 章 脱壳神器 ZjDroid
- 第 19 章 Native 层 Hook 神器 Cydia Substrate
- 操作篇
- 第 20 章 静态方式逆向应用
- 第 21 章 动态调试 smali 源码
- 第 22 章 IDA 工具调试 so 源码
- 第 23 章 逆向加固应用
- 第 24 章 逆向应用经典案例分析
- 第 25 章 Android 中常见漏洞分析
- 第 26 章 文件加密病毒 Wannacry 样本分析
20.3 ARM 指令
逆向者必须能看懂汇编代码,就类似于在调试 Java 层代码的时候一样,必须会 smali 语法。庆幸的是,这两种语法都不是很复杂,知道一些大体的语法和指令就可以了,下面来看看 ARM 指令中的寻址方式、寄存器、常用指令,了解这三个知识点,就会对 ARM 指令有一个大体的了解。
1.ARM 指令中的寻址方式
·立即数寻址
立即数寻址也叫立即寻址,是一种特殊的寻址方式。操作数本身包含在指令中,只要取出指令也就取到了操作数。这个操作数叫做立即数,对应的寻址方式叫作立即寻址。例如:
·寄存器寻址
寄存器寻址是利用寄存器中的数值作为操作数,也称为寄存器直接寻址。例如:
·寄存器间接寻址
寄存器间接寻址就是把寄存器中的值作为地址,再通过这个地址去取得操作数,操作数本身存放在存储器中。例如:
·寄存器偏移寻址
这是 ARM 指令集特有的寻址方式,它是在寄存器寻址得到操作数后再进行移位操作,得到最终的操作数。例如:
·寄存器基址变址寻址
寄存器基址变址寻址又称为基址变址寻址,是在寄存器间接寻址的基础上扩展来的。它将寄存器(该寄存器一般称作基址寄存器)中的值与指令中给出的地址偏移量相加,从而得到一个地址,通过这个地址取得操作数。例如:
·多寄存器寻址
这种寻址方式可以一次完成多个寄存器值的传送。例如:
·堆栈寻址
堆栈是一种数据结构,按先进后出(First In Last Out,FILO)的方式工作,使用堆栈指针(Stack Pointer,SP)指示当前的操作位置,堆栈指针总是指向栈顶。例如:
2.ARM 中的寄存器
R0-R3:用于函数参数及返回值的传递。
R4-R6,R8,R10-R11:没有特殊规定,就是普通的通用寄存器。
R7:栈帧指针(Frame Pointer),指向前一个保存的栈帧(stack frame)和链接寄存器(link register,lr)在栈上的地址。
R9:操作系统保留。
R12:又叫 IP(intra-procedure scratch)。
R13:又叫 SP(stack pointer),是栈顶指针。
R14:又叫 LR(link register),存放函数的返回地址。
R15:又叫 PC(program counter),指向当前指令地址。
3.ARM 中的常用指令含义
ADD:加指令。
SUB:减指令。
STR:把寄存器内容存到栈上去。
LDR:把栈上内容载入一寄存器中。
.W:是一个可选的指令宽度说明符。它不会影响为此指令的行为,它只是确保生成 32 位指令。Infocenter.arm.com 的详细信息。
BL:执行函数调用,并把使 lr 指向调用者(caller)的下一条指令,即函数的返回地址。
BLX:同上,但是在 ARM 和 thumb 指令集间切换。
CMP:指令进行比较两个操作数的大小。
4.ARM 指令简单代码段分析
C 代码:
对应的 ARM 指令:
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论