smali语法之指令学习

本文详细介绍了smali语法中的关键指令,包括数据操作、返回、定义、锁异常处理、实例操作、比较跳转、方法调用以及其他指令,旨在帮助读者掌握smali文件分析的核心技巧。
摘要由CSDN通过智能技术生成

在学习分析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、数据定义指令

数据定义指令非常常用,其基本指令为const
const/4 vA,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值