Advertisement

研究SMALI语法中的指令执行流程

阅读量:

掌握分析smali文件的方法时,在学习阶段有一些关键指令值得我们记住。这种技巧能帮助我们迅速解析smali文件。本文将列举一些典型的指令供参考:

1、数据操作指令:

数据操作指令的基本形式是move命令及其参数组合。 move指令会伴随不同的后缀部分依据字节码的大小和类型来决定。

简单举例如下:
移动vA,vB
将vA目标单元的内容复制至vB目标单元,并指定源和目的单元均为4位移位操作
移动/from16 vAA,vBBBB
将来自16位移位操作的结果加载到8位目标单元中
对目标进行赋值
运算结果为单字非对象类型
加载上一次invoke指令的操作结果至指定位置
将运行时异常加载到指定位置

2、返回指令

按回车键结束程序流程
通过按回车键退出该函数
当函数返回时会将结果放在寄存器vAA中
表示函数返回一个32位非对象类型的数据并将该数据保存在寄存器vAA中
表示函数返回的对象类型并将该对象存储在寄存器vAA中

3、数据定义指令

数据定义指令常用于各种场景;其中核心的操作符是constconst/4\ vA,\ #+B 在将数值符号扩展至32位之后,则会将其存储于寄存器vA中。 const\ vAA,\ #+BBBBBBBB 则会将其存储于寄存器vAA中。 $const-string\ vAA,str

全部评论 (0)

还没有任何评论哟~