安云网 - AnYun.ORG | 专注于网络信息收集、网络数据分享、网络安全研究、网络各种猎奇八卦。
当前位置: 安云网 > 技术关注 > 移动安全 > Smali基本语法

Smali基本语法

时间:2018-01-02来源:未知 作者:安云网点击:
.field private isFlag:z 定义变量 .method 方法 .parameter 方法参数 .prologue 方法开始 .line 12 此方法位于第12行 invoke-super 调用父函数 const/high16 v0, 0x7fo3 把0x7fo3赋值给v0 invoke-direct 调用函数 return-void 函数返回void .end method 函数结束 new-instance 创

.field private isFlag:z  定义变量


//本文来自安云网

.method  方法

//内容来自安云网


//内容来自AnYun.ORG

.parameter  方法参数 //本文来自安云网


//内容来自安云网

.prologue  方法开始

//内容来自安云网


//本文来自安云网

.line 12  此方法位于第12行

//本文来自安云网


//本文来自安云网

invoke-super  调用父函数 //内容来自安云网


//内容来自安云网

const/high16  v0, 0x7fo3  把0x7fo3赋值给v0

//内容来自AnYun.ORG


//内容来自AnYun.ORG

invoke-direct  调用函数

//内容来自AnYun.ORG


//内容来自AnYun.ORG

return-void  函数返回void //内容来自AnYun.ORG


//内容来自安云网

.end method  函数结束

//内容来自AnYun.ORG


//内容来自安云网

new-instance  创建实例

//内容来自安云网


//内容来自安云网

iput-object  对象赋值

//内容来自AnYun.ORG


//内容来自安云网

iget-object  调用对象

//本文来自安云网


//内容来自安云网

invoke-static  调用静态函数

//本文来自安云网


//本文来自安云网

条件跳转分支:

//内容来自AnYun.ORG


//本文来自安云网

"if-eq vA, vB, :cond_**"   如果vA等于vB则跳转到:cond_** //内容来自AnYun.ORG

"if-ne vA, vB, :cond_**"   如果vA不等于vB则跳转到:cond_** //内容来自AnYun.ORG

"if-lt vA, vB, :cond_**"    如果vA小于vB则跳转到:cond_** //内容来自安云网

"if-ge vA, vB, :cond_**"   如果vA大于等于vB则跳转到:cond_** //内容来自AnYun.ORG

"if-gt vA, vB, :cond_**"   如果vA大于vB则跳转到:cond_** //内容来自AnYun.ORG

"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_** //内容来自AnYun.ORG

"if-gez vA, :cond_**"   如果vA大于等于0则跳转到:cond_**

//内容来自安云网

"if-gtz vA, :cond_**"   如果vA大于0则跳转到:cond_**

//内容来自安云网

"if-lez vA, :cond_**"    如果vA小于等于0则跳转到:cond_** //本文来自安云网

private boolean ifSense(){
        boolean tempFlag = ((3-2)==1)? true : false;
        if (tempFlag) {
            return true;
        }else{
            return false;
        }
    } 
//内容来自AnYun.ORG
.method private ifSense()Z
    .locals 2

    .prologue
    .line 22
    const/4 v0, 0x1     // v0赋值为1

    .line 24
    .local v0, tempFlag:Z
    if-eqz v0, :cond_0            // 判断v0是否等于0, 不符合条件向下走, 符合条件执行cond_0分支

    .line 25
    const/4 v1, 0x1            // 符合条件分支

    .line 27
    :goto_0
    return v1

    :cond_0
    const/4 v1, 0x0            // cond_0分支

    goto :goto_0
.end method

###文字描述:如果符合if分支则程序往下走,最终return ; 而如果条件不符合则会走到 :cond_0分支 , 最终执行 goto :goto_0走回 :goto_0返回 //本文来自安云网 
private void forSense(){
    listStr = new ArrayList<String>(COUNT);    for (int i = 0; i < COUNT; i++) {
        listStr.add("现在轮到我上场乐");
    }
} 
//内容来自安云网
.line 40
    const/4 v0, 0x0

    .local v0, i:I
    :goto_0
    if-lt v0, v3, :cond_0            //  if-lt判断数值v0小于v3 ,    如不符合往下走, 符合执行分支 :cond_0

    .line 43
    return-void

    .line 41
    :cond_0                // 标签
    iget-object v1, p0, Lcom/example/smalidemo/MainActivity;->listStr:Ljava/util/List;                // 引用对象

    const-string v2, "\u73b0\u5728\u8f6e\u5230\u6211\u4e0a\u573a\u4e50"

    invoke-interface {v1, v2}, Ljava/util/List;->add(Ljava/lang/Object;)Z        // List是接口, 所以执行接口方法add

    .line 40
    add-int/lit8 v0, v0, 0x1    // 将第二个v0寄存器中的值,加上0x1的值放入第一个寄存器中, 实现自增长

    goto :goto_0                // 回去:goto_0标签

###文字描述:设定一个标签goto_0, 判断v0小于v3, 符合执行分支:cond_0 ,然后又跑回:goto_0做继续判断 
//内容来自安云网


//本文来自安云网

https://www.cnblogs.com/lee0oo0/p/3728271.html //内容来自安云网

http://blog.csdn.net/lpohvbe/article/details/7981386    

//内容来自AnYun.ORG

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
验证码: 点击我更换图片
相关内容
推荐内容