12下一页
返回列表 发新帖

smali语法

[复制链接]

22

主题

527

帖子

1766

积分

高中生

Rank: 4

金币
686
好评
0
贡献
0

考神

发表于 2021-7-14 11:24:48 来自手机  | 显示全部楼层 | 阅读模式
学习分享:


nop
没有操作
move vx,vy
移动内容vy到vx.寄存器范围必须在256以内
move/from16 vx,vy
移动vy到vx.vy寄存器范围只能在64k以内vx寄存器范围必须在256内.
move-wide/from16 vx,vy
移动 long/double值从vy到vx.vy寄存器范围只能在64k以内vx是一个256寄存器.
move-object vx,vy
自动对象引用从vy到vx.
move-object/from16 vx,vy
移动对象引用从vy到vx,vy可以添加64k 寄存器和 vx可以添加256 寄存器.
move-result vx
把前面运行的结果赋值给vx.
move-result-wide vx
移动 long/double 方法调用结果赋值到vxvx+1.move-result-object vx
移动前面的方法调用结果到vx
move-exception vx
移动异常对象 并抛出异常到vX.
return-void
没有返回值返回
return vx
返回值vx
return-wide vx
返回double/long 结果vxvx+1.
return-object vx
返回vx对象引用值
const/4 vx,lit4
将4字节的参数赋值到vx
const/16 vx,lit16
将16进制数赋值到vx
const vx, lit32
将整数常量赋值到vx
const/high16 v0, lit16
将16位不变的最高位寄存器用于初始化浮点数
const-wide/16 vx, lit16
将整数常量vx和vx+1寄存器扩大整数为常量..
const-wide/32 vx, lit32
把32 bit常数 vx和vx+1寄存器
const-wide vx, lit64
把64 bit常数vx和vx+1放入寄存器.
const-wide/high16 vx,lit16
将16位常数vx和vx+1的最高位寄存器终于初始化值的两倍
const-string vx,string_id
设定一个字符串常量vx字符串id
const-class vx,type_id
从type_id 移动类对象和类标识(e.g.Object.class)到VX.
monitor-enter vx
监控对象引用 vx.
monitor-exit
监视器对象引用vX.
check-cast vx, type_id
检查是否对象引用
instance-of vx,vy,type_id
检查是否vy是否是一个类的实例 type_id.
array-length vx,vy
计算vy引用的数组元素并赋值到vx.
new-instance vx,type
实例化对象引用并将vx创建为新实例
new-array vx,vy,type_id
生成新的数组 type_id类型和vy元素大小并将数组赋值给VX.
filled-new-array (parameters],type_id
生成新数组 type_id并填充parameters5.生成的数组可以通过move-result-object 引用后使用filled-new-array 指令
bmali语法查询
filled-new-array-range (vx..vy),type_id
生成一个新数组 type_id 和填补参数 生成新
数组引用可以通过 move-result-object指
令使用 filled-new-array fill-array-data
vx,array_data_offset填充数组引用到vx
throw vx
抛出一个异常对象,异常对象vx.
goto target
无条件跳转.
goto/16 target
无条件跳转
packed-switch vx,table
实例化一个switch语句,查找表与常量和偏移量为常数,如果表里没有匹配到则继续执行下一条指令.sparse-switch vx,table
实例化 switch语法表 指令使用查找表与常量和偏移量为常数,如果表里没有匹配到则继续执行下一条指令.cmpl-float
在vy比较浮点值后赋值到vx
cmpg-float vx,vy,vz比较浮点值vy和vz和设置整数赋值到VX.
cmpl-double vx,vy,vz
比较double值vy和vz并设置整数 赋值到vx.cmpg-double vx, vy, Vz
比较double值vy和vz并设置整数 赋值到vx.cmp-long vx, vy, Vz
aget vx,vy,Vz
得到整数值对象引用array到vx.aget-wide vx,vy,vz获得 long/double值long/double 数组为 vx,vx+1.vy引用数组和vz引索
aget-object vx,vy,Vz
获得对象引用值和n对象引用 数组赋值到vxvy引用数组和vz引索
aget-boolean vx,vy,vz
获得 boolean值和 boolean 数组赋值到vxvy引用数组和vz引索
aget-byte vx,vy,Vz
获得 byte 值把 byte 数组赋值到vxvy引用数组和vz引
aget-char vx, vy,Vz
获得 char 值和 character 数组赋值到 vx aget-short vx,vy.vz 获得 short值和 short 数组赋值到 vX.
aput vx,vy,VZ
把integer 赋值到vx得到整数元素组..
aput-wide vx,vy,vz
把double/long赋值到vx,vx+1成double/long数组.aput-object vx,vy,vz
把vy对象引用 赋值到vx得到整数元素组
aput-boolean vx,vy,vz
把boolean 赋值到vx 得到元素boolean数组.
aput-byte vx,vy,Vz
把 byte 赋值到vx 得到元素byte 数组.
aput-char vx,vy,Vz
aput-short vx,vy,Vz
把 short 赋值到vx 得到元素short数组.
iget vx,vy, field_id
读取一个 实例字段到vx.实例从vy引用.
iget-wide vx,vy,field_id
读取一个 实例字段到vx1.实例从vy引用.
iget-object vxvy,field_id
读取一个对象引用 实例字段到vx.实例从vy引用.iget-boolean vx,vy,field_id
读取 boolean 实例字段到vx.实例从vy引用.
iget-byte vx,vy,field_id
读取 byte 实例字段到vx.实例从vy引用.
iget-char vx,vy,field_id
读取char 实例字段到vx.实例从vy引用.
iget-short vx,vy,field_id
读取 short 实例字段到vx.实例从vy引用.
iput vx,vy, field_id
将vx放入一个实例字段.实例从vy引用.
iput-wide vx,vy, field_id
把wide 数值in vx and vx+1注册到一个实例字段 实例从vy引用.
iput-object vx,vy,field_id
把the对象引用在vx实际化字段 实例从v引用
iput-boolean vx,vy, field_id
把 boolean 数值在vx实际化字段 实例从vy引用.iput-byte vx,vy,field_id
把byte 数值在vx实际化字段.实例从vy引用.iput-char vx,vy,field_id
把char 数值在vx实际化字段.实例从vy引用.iput-short vx,vy,field_id
把 short 数值在vx实际化字段.实例从vy引用.sget vx,field_id
从field_id读取整个字段到vx.
sget-wide vx, field_id
从field_id读取静态字段到vx和vx+1寄存器.sget-object vx,field_id
读取对象引用field_id到vx.
sget-boolean vx,field_id
读取boolean静态字段field_id到vx.
sget-byte vx,field_id
读取byte 静态字段field_id到vx.
sget-char vx,field_id
读取char静态字段 field_id到vx.
sget-short vx,field_id
读取short 静态字段 field_id到vx.
sput vx, field_id
把 vx 静态字段
sput-wide vx,field_id
把 vx and vx+1转到一个静态字段
sput-object vx,field_id
对象引用in vx转到一个静态字段
sput-boolean vx,field_id
把 boolean 赋值到vx转到一个静态字段sput-byte vx,field_id
把 byte 赋值到vx转到一个静态字段
sput-char vx,field_id
把char赋值到vx转到一个静态字段
sput-short vx,field_id
把 short 赋值到vx转到一个静态字段
invoke-virtual (parameters],methodtocall调用一个虚拟方法与参数.
invoke-super (parameter],methodtocall调用直接父类的虚方法.
invoke-direct ( parameters],methodtocall调用一个方法参数,没有虚拟方法解析
invoke-static (parameters],methodtocall调用一个静态方法与参数
invoke-interface (parameters]methodtocall调用接口方法
invoke-virtual/range(vx.vy),methodtocall
调用虚拟方法的寄存器.指定一个寄存器和寄存器数量被传递给方法
invoke-super/range
直接调用父类的虚方法。指定一个寄存器和寄存器数量被传递给方法
invoke-direct/range (vx.vy),methodtocall
直接调用寄存器方法指定一个寄存器和寄存器数量被传递给方法
invoke-static/range (vx.vy),methodtocall
调用静态方法寄存器指定一个寄存器和寄存器数量被传递给方法
invoke-interface-range
调用一个接口方法寄存器,指定一个寄存器和寄存器数量被传递给方法
neg-int vx,vy
计算vx=-vy.
neg-long vx,vy
计算vxvx+1=-(vy,vy+1)
neg-float vx,vy
计算vx=-vy
neg-double vx,vy
计算vX,vx+1=-(vy,vy+1)
int-to-long vx, vy
转换整数到vy并转成long in vx,vx+1.
int-to-float vx, vy
转换整数到vx并转成float in vx.
int-to-double vx, vy
转换vy到整数 double in vx,vx+1.
long-to-int vx,vy
转换long vy值,vy+1到整数储存到vx
long-to-float vx, vy
转换long vy值,vy+1成float in vx.
long-to-double vx, vy
转换long vy值,vy+1成double 赋值到vx,vx+1.float-to-int vx, vy
转换float vy值到整数并赋值到vx.
float-to-long vx,vy
转换float vy值成long 赋值到vx.
float-to-double vx,vy
转换float vy值成double 赋值到
vx,vx+1.double-to-int vx,vy转换double vy值,vy+1到整数赋值到vx.
double-to-long vx, vy
转换 double vy值,vy+1 成long 赋值到vx,vx+1.double-to-float vx,vy
转换double vy值,vy+1成float 赋值到vx.
int-to-byte vx,vy
转换int vy值到byte值,并保存到vx.
int-to-char vx,vy
转换int vy值到char值,并保存到vx.
int-to-short vx,vy
转换int vy值到short值,并保存到vx.
add-int vx,vy,vz
计算vy+vz并将结果放到vx.
sub-int vx,vy,vz
计算vy-vz并将结果放到vx.
mul-int vx, vy, VZ VZ
与vy 相乘并将结果转int放到vx.
div-int vx,vy,vz Divides vy
与vz 并将结果赋值到 vx.
rem-int vx,vy,vz
计算vy% vz并将结果赋值到vx.
and-int vx, vy, Vz
计算vy AND vz并将结果赋值到 vx.
or-int vx, vy, VZ
计算vy ORvz并将结果赋值到 vx.
xor-int vx, vy, VZ
计算 vy XOR vz并将结果赋值到 vx.
shl-int vx, vy, Vz
转换 vy指定的位置留下后并储存结果到vx.shr-int vx, vy, vz
从vy指定位置转换并储存到vx.
ushr-int vx, vy, Vz
无符号右移(>>>)vy指定位置后将结果储存到vx
add-long vx, vy, Vz
添加vy到vz 并将结果赋值到 vx1.
sub-long vx,vy,vz
计算vy-vz并将结果赋值到 vx1.
mul-long vx,vy,vz
计算vy*vz 并将结果赋值到 vx1.
div-long vx, vy, Vz
计算 vy/vz 并将结果赋值到 vx1.
rem-long vx,vy,Vz
计算vy%vz并将结果赋值到 vx1.
and-long vx, vy, Vz
计算the vy AND vz并将结果赋值到vx1.
or-long vx, vy, Vz
计算the vy OR vz并将结果赋值到 vx1.
xor-long vx, vy, Vz
计算the vy XOR vz并将结果赋值到 vx1.
shl-long vx, vy, vz Shifts left vy by vz positions并将结果储存在vx1.
shr-long vx,vy,vz Shifts right vy by vz positions并将结果储存在vx1.
ushr-long vx,vy, vz Unsigned shifts right vy by vz positions
并将结果储存在vx1.
add-float vx,vy,vz
调用一个虚方法在目标对象父类使用."if-eq vA, vB, :cond_**11
如果vA=vB则跳转到:cond_*
"if-ne vA, vB, :cond_**"
如果vA+vB则跳转到:cond**
"if -It vA, vB, :cond_**11
如果vA<vB则跳转到:cond_**"if-ge vA, vB, :cond_★★Ⅱ
如果vAvB则跳转到:cond_**
"if -gt vA, vB, :cond_**"
如果vA>vB则跳转到:cond.**
"if-le vA, vB, :cond_**"
如果vA+vB则跳转到:cond.**"if-eqz vA, :cond_**1
如果vA=0则跳转到:cond_**
"if-nez vA, :cond_**Ⅱ
如果vA+0则跳转到:cond_*★
"if-Itz vA, :cond_**l1
如果vA<0则跳转到:cond.
"if-gez vA, :cond_**"
如果vA0则跳转到:cond**
"if-gtz vA, :cond_**1
如果vA>0则跳转到:cond_**"if-lez vA, :cond_**1

万物皆有裂痕,那是光进来的地方。
回复

使用道具 举报

27

主题

254

帖子

887

积分

高中生

Rank: 4

金币
315
好评
3
贡献
0
发表于 2021-7-14 11:28:38 来自手机  | 显示全部楼层
感谢分享
回复

使用道具 举报

1

主题

331

帖子

1002

积分

高中生

Rank: 4

金币
266
好评
0
贡献
0

MT论坛新人MT论坛帅哥MT论坛最佳新人考神

发表于 2021-7-14 11:50:37 | 显示全部楼层
感谢分享
回复

使用道具 举报

149

主题

2398

帖子

5882

积分

硕士生

安争(潜水,偶尔回复。)

Rank: 6Rank: 6

金币
667
好评
74
贡献
0

考神MT论坛最佳新人MT论坛帅哥MT论坛新人MT论坛活跃会员MT论坛侠客

QQ
发表于 2021-7-14 11:58:56 来自手机  | 显示全部楼层
推荐软件。
smali语法查询
回复

使用道具 举报

23

主题

603

帖子

1687

积分

高中生

Rank: 4

金币
622
好评
1
贡献
0
发表于 2021-7-14 12:28:39 | 显示全部楼层
涨知识了,感谢分享
回复

使用道具 举报

0

主题

408

帖子

1515

积分

高中生

Rank: 4

金币
748
好评
0
贡献
0
发表于 2021-7-14 12:33:10 | 显示全部楼层
smali语法查询
回复

使用道具 举报

27

主题

337

帖子

1157

积分

高中生

❁⃘

Rank: 4

金币
189
好评
3
贡献
0

MT论坛新人MT论坛帅哥考神MT论坛最佳新人

发表于 2021-7-14 12:34:39 来自手机  | 显示全部楼层
这不是百度一下就有了
回复

使用道具 举报

0

主题

3180

帖子

5845

积分

硕士生

Rank: 6Rank: 6

金币
1694
好评
0
贡献
0
发表于 2021-7-14 12:45:41 | 显示全部楼层
加油加油。。。
回复

使用道具 举报

22

主题

527

帖子

1766

积分

高中生

Rank: 4

金币
686
好评
0
贡献
0

考神

发表于 2021-7-14 14:01:14 来自手机  | 显示全部楼层
bin哥永远是我哥,我哥最牛逼 发表于 2021-7-14 12:34
这不是百度一下就有了

有我发在帖子里面,我想看就看方便吗?
回复

使用道具 举报

13

主题

787

帖子

2112

积分

大学生

小学鸡

Rank: 5Rank: 5

金币
1119
好评
2
贡献
0
发表于 2021-7-14 14:40:50 | 显示全部楼层
感谢分享。
回复

使用道具 举报

11

主题

535

帖子

1292

积分

高中生

Rank: 4

金币
483
好评
2
贡献
0

MT论坛新人MT论坛最佳新人

QQ
发表于 2021-7-14 15:34:10 来自手机  | 显示全部楼层
感谢分享
回复

使用道具 举报

27

主题

337

帖子

1157

积分

高中生

❁⃘

Rank: 4

金币
189
好评
3
贡献
0

MT论坛新人MT论坛帅哥考神MT论坛最佳新人

发表于 2021-7-14 18:49:02 来自手机  | 显示全部楼层
XY小永 发表于 2021-7-14 14:01
有我发在帖子里面,我想看就看方便吗?

啊,是的是的。顺便推荐一下,有个叫代码手册的软件,你可以试试
回复

使用道具 举报

22

主题

527

帖子

1766

积分

高中生

Rank: 4

金币
686
好评
0
贡献
0

考神

发表于 2021-7-14 18:52:04 来自手机  | 显示全部楼层
bin哥永远是我哥,我哥最牛逼 发表于 2021-7-14 18:49
啊,是的是的。顺便推荐一下,有个叫代码手册的软件,你可以试试

好的,感谢分享。
回复

使用道具 举报

15

主题

102

帖子

642

积分

初中生

Rank: 3Rank: 3

金币
119
好评
2
贡献
0
发表于 2021-7-14 18:53:48 来自手机  | 显示全部楼层
没点java 安卓开发基础学这个东西没多大作用
回复

使用道具 举报

86

主题

6505

帖子

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
4226
好评
36
贡献
0

MT论坛活跃会员

发表于 2021-7-14 18:56:43 来自手机  | 显示全部楼层
感谢楼主分享
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表