//本代码由autojs交流群在群里和网上整理提供的一键式群里有侵权,请联系删除
进入资源网站获取更多实战视频
Smali的基本语法
. field private isFlag:z定义变量
. method方法
. parameter方法参数
. prologue方法开始
. line 12此方法位于第12行
invoke-super调用父函数
const/high 16v0,0x7fo3将0x7fo 3代入v 0
invoke-direct调用函数
return-void函数返回void
. end method函数结束
新实例创建实例
输入-对象对象分配
iget-object调用对象
invoke-static调用静态函数
===================
条件跳转分支(最常用。 ) :
如nez为eqz,eq为ne那样,颠倒逻辑,实现解读的目的。
' if-eq vA,vB,cond_ " 如果vA等于vB则跳转到:cond_
' if-ne vA,vB,cond_ " 如果vA不等于vB则跳转到:cond_
' if-lt vA,vB,cond_ " 如果vA小于vB则跳转到:cond_
' if-ge vA,vB,cond_ " 如果vA大于等于vB则跳转到:cond_
' if-gt vA,vB,cond_ " 如果vA大于vB则跳转到:cond_
' if-le vA,vB,cond_ " 如果vA小于等于vB则跳转到:cond_
' if-eqz vA,cond_ " 如果vA等于0则跳转到:cond_
' if-nez vA,cond_ " 如果vA不等于0则跳转到:cond_
' if-ltz vA,cond_ " 如果vA小于0则跳转到:cond_
' if-gez vA,cond_ " 如果vA大于等于0则跳转到:cond_
' if-gtz vA,cond_ " 如果vA大于0则跳转到:cond_
' if-lez vA,cond_ " 如果vA小于等于0则跳转到:cond_
====================
if函数的java代码:
私有布尔if sense
BooleanTempflag=((3-2)==1)? 真:假;
if (模板) {
返回真;
}else{
返回假;
}
}
if函数分析:
. method private ifSense () z
. locals 2
. prologue.line 22 const/4v 0,0x1//v 0赋值为1.line 24.local v0,tempflag:zif-eqzv0,cond_0//确定v0是否为0,不符合条件的执行cond_0分支. line 25 const/4 v1,0x1//符合条件的分支. line 27: goto _0reto
##字符说明:如果符合if分支,程序向下进行,最终返回; 如果不满足条件,则转到:cond_0分支,最终执行goto 3:goto_0并返回到3360goto_0
===================
for函数java代码:
私有语音传感器
liststr=newArraylist(count );
for(intI=0; i COUNT; I ) {
listStr.add (“现在轮到我出场了”)
}
}
for函数分析:
. line 40
const/4v 0,0x 0
. local v0,i:I:goto_0if-lt v0,v3,cond_0//if-lt确定数值v0小于v3,如果不继续,则执行分支: cond _0. line 43 return-void.line 41: cond _0////引用位置const-string v2,' _73b0(u5728(u8f6e(u5230 ) u6211 ) u4e0a ) u573a ) e50 ) invoke-interface{v1,- add (ladd ) )因为Z //List是接口,所以运行接口方法add.line 40add-int/lit8 v0,v0,0x1//,将第二个v 0寄存器的值和0x1放入第一个寄存器中