smali 基础

寄存器定义

.locals  :定义寄存器数量。

函数定义

.method :函数开始。

.end :函数结束。

(move赋值,是右边给左边赋值)

move vA, vB :净vB寄存器的值赋予vA寄存器。

move/16  :vAA(8位),vBBB (16位) 定义数据宽度

move-object vA, vB :用于对象赋值。

move-object/16 vA, vB

返回

return vAA :返回值

return-object :返回一个对象

数据定义

const 

const-string :定义为字符串

 

check-cast vAA,type@BBBB :将vAA寄存器的对象引用转换成指定类型。

instance-of vA,vB,type@CCCC :判断vB寄存器的对象引用是否可以转换成指定类型,如果是 vA =1 否 vA=0

new-instance vAA,type@AAAA :构造一个指定类型的新实例。

 

array-length vA,vB :获取vB寄存器中数组的长度,将结果赋值给vA寄存器。

new-array vA,vB,type@CCCC :vB构造指定类型和大小数组,将结果赋值给vA。

 

throw vAA :抛出vAA寄存器中指定类型的异常异常。

 

goto :无条件跳转。

packed-switch vAA,+BBBBBBBB :分支跳转指令,+BBBBBBBB 只想递增偏移表。

sparse-switch vAA,+BBBBBBBB :分支跳转,无规律。

 

if-test :if跳转指令

eq  :等于

ne  :不等于

lt  :小于

ge  :大于等于

gt  :大于

nez  :不等于0

eqz  :等于

 

cmp-float  :比较两个单精度浮点数。

cmp-double :比较两双精度浮点数。

cmp-long :比较两个长整型。

 

 

普通字段

iget :读操作

iput :写操作

 

静态字段

sget :读操作

sput :写操作

 

方法调用

invoke-virtual :调用实例虚方法。

invoke-super :调用实例的父类方法。

invoke-direct :调用实例的直接方法。

invoke-static :调用实例的静态方法。

 

posted on 2022-03-04 00:31  Haha.chen  阅读(238)  评论(0编辑  收藏  举报

导航