前言:没学过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语法的流程,然后学会去分析,这样遇到问题就不会一头雾水了,想要更进一步学习的话多找相关资料。





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

被折叠的 条评论
为什么被折叠?



