zoukankan      html  css  js  c++  java
  • (2.1)Smali系列学习之基础语法

    一.什么是Smali?
    Smali,Baksmali分别是指安卓系统里的Java虚拟机(Dalvik)所使用的一种dex格式文件的汇编器,反汇编器。其语法是一种宽松式的Jasmin/dedexer语法,而且它实现了.dex格式所有功能(注解,调试信息,线路信息等)

    二.smali的语法
    1.原始类型
    B---byte
    C---char
    D---double
    F---float
    I---int
    J---long
    S---short
    V---void
    Z---boolean
    [XXX---array
    Lxxx/yyy---object

    解析下最后两项,数组的表示方式是:

    在基本类型前加上前中括号“[”,例如int数组和float数组分别表示为:[I、[F;
    对象的表示则以L作为开头,格式LpackageName/objectName;注意必须有个分号跟在最后),例如String对象在smali中为:Ljava/lang/String;,其中java/lang对应java.lang包,String就是定义在该包中的一个对象。

    2.方法的定义
    格式:Func-Name (Para-Type1Para-Type2Para-Type3...)Return-Type

    注意:参数和参数间没有任何分隔符,

    1.hello()v
     就是void hello()

    2.hello(lll)Z
     就是boolean hello(int,int,int)

    3.hello(Z[l[lLjava/lang/String;J)Ljava/lang/String
     就是String hello(boolean,int[],int[],String,long)

    3.基本语法
    .field private isFlag:z 定义变量
    .method  方法
    .parameter  方法参数
    .prologue  方法开始
    .line 123  此方法位于第123行
    invoke-super  调用父函数
    const/high16 v0, 0x7fo3  把0x7fo3赋值给v0
    invoke-direct  调用函数
    return-void  函数返回void
    .end method  函数结束
    new-instance  创建实例
    iput-object  对象赋值
    iget-object  调用对象
    invoke-static  调用静态函数

    4.条件跳转分支:
    "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_**

  • 相关阅读:
    用 tableExcel导出EXCEL数据
    个人作业——软件评测
    结对第二次作业——某次疫情统计可视化的实现
    软工实践寒假作业(1/2)
    java注解和反射
    共享密钥
    鲁棒性验证-第五小组
    维数约减报告--第五小组
    网络1911、1912 D&S第1次作业--线性表批改总结
    网络1911、1912 C语言第4次作业--函数批改总结
  • 原文地址:https://www.cnblogs.com/eustoma/p/8991039.html
Copyright © 2011-2022 走看看