在学习分析smali文件过程中,有一些特殊的指令需要记忆,这样有助于我们快速分析smali文件,本文将一些常见的罗列如下:
1、数据操作指令:
数据操作指令的原型为:move destination,source或者move destination。
move指令会根据字节码的大小与类型不同,后面跟上不同的后缀。
简单举例如下:
move vA,vB
将vB寄存器的值赋给vA寄存器,源寄存器与目的寄存器都是4位
move/from16 vAA,vBBBB
将vBBBB寄存器的值赋给vAA寄存器,源寄存器16位,目的寄存器8位
move-object vA,vB
为对象赋值,源寄存器与目的寄存器都是4位
move-result vAA
将上一个invoke类型指令操作的单字非对象结果赋值给vAA寄存器
move-exception vAA
将一个运行时的异常赋值给vAA寄存器
2、返回指令
return-void从一个void方法返回
return vAA
表示函数返回一个32位非对象类型的值,返回值寄存器为8位的寄存器vAA
return-object vAA
表示函数返回一个对象类型的值。
3、数据定义指令
数据定义指令非常常用,其基本指令为constconst/4 vA,