smali语法的认识

本文以支付失败的smali案例为切入点,介绍了smali语法。通过具体代码行,如创建实例对象、直接调用、虚拟调用等指令,讲解了smali语法流程。还提及借助附件和相关工具更好理解,鼓励进一步学习可多找资料。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:没学过smali基础知识,纯个人理解

如图,这是一个关于支付失败的smali案例

另外建议用np管理器查询smali语法64534为了更好理解,需配合附件来使用

https://wwlw.lanzouy.com/iMncq0k95gkb

■第1行new-instance(新实例)

创建了一个实例对象:

Ljava/lang/StringBuilder;

实例的开头大写字母L一般来表示对象的数据类型

因此这个实例的对象是字符串(String)

分号表示结束

实例引用到寄存器v0

■第2行invoke-direct (直接调用)

invoke-direct {v0} Ljava/lang/StringBuilder;->()V

大括号直接调用了v0的实例,对象无效类型V(void)

->表示归属关系的方法名

■第3行invoke-virtual(虚拟调用的)

invoke-virtual {v0,v4} Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

讲到这就借助v4认识现有的函数调用指令:

invoke-virtual {v0,v4}(虚拟调用)

invoke-static {v4}(静态调用)

move-result-object v4(移动结果对象)

invoke-interface {v0,v4,v6} (调用接口)

const-string v4 (常量字符串)

new-instance v4 (新实例)

invoke-direct {v4,v0} (直接调用)

差不多到尾音了,因为主题就是认识到samli语法的流程,然后学会去分析,这样遇到问题就不会一头雾水了,想要更进一步学习的话多找相关资料。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天 道

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值