美文网首页
Android逆向——Smali语法

Android逆向——Smali语法

作者: 冰至如归 | 来源:发表于2019-08-19 14:38 被阅读0次

    一、android盗版软件大部分都是二次打包完成的。基本上就是反编译,注入广告,打包签名,上传市场。其中注入广告或者破解游戏都是通过smali来达到的。smali就是DVM内部执行的核心代码!

    二、语法

    1.dalvik字节码有两种类型,原始类型和引用类型。对象和数组属于引用类型。其他的都是原始类型。

    2.原始类型:

    V void 返回值类型

    Z boolean

    B  byte

    S short

    C char

    I int

    J long(64位)

    F float

    D double(64位)

    3.对象类型

    对象的表示以L开头,格式是LpackageName/objectName;,

    String对象在smali中为:Ljava/lang/String;

    内部类对象为:LpackageName/objectName$subObjectName;在内部类前加$符号

    4.数组类型

    int[]      [I

    int[][]    [[I

    String[]  [Ljava/lang/String;

    5.方法

    Lpackage/name/ObjectName;

    ->MethodName(III)Z

    翻译成java是:Lpackage/name/ObjectName表示包名;MethodName是方法名;III表示三个整型参数;Z表示返回boolean类型

    方法的参数是连接起来的没有分隔符

    fool()V-----------------void foo()

    set(Ljava/lang/String;Ljava/lang/String;I)V---------------void set(String name, String id, int age)

    foo(Z[I[ILjava/lang/String;J)Ljava/lang/String;------------String foo(boolean,int[],int[],String,long)

    6.参数

    Lpackage/name/ObjectName;

    ->FieldName:Ljava/lang/String;

    包名->字段名:字段类型

    7.寄存器DVM

    DVM与JVM最大的区别就是DVM是基于寄存器的。基于寄存器的意思是说:在smali中所有的操作都必须经过寄存器来进行。

    8.smali基本指令语法

    .field private isFlag:z  定义变量

    .method  方法

    .parameter  方法参数

    .line 8  此方法位于第8行

    invoke-super  调用父函数

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

    invoke-super  调用父函数

    invoke-direct  调用函数

    return-void  函数返回void

    .end method  函数结束

    new-instance  创建实例

    iput-object  对象赋值

    iget-object  调用对象

    invoke-static  调用静态函数

    条件跳转分支:

    if-eq vA,vB, :cond_**  如果vA等于vB则跳转到:cond_**

    if-ne........               不等于

    if-lt                         小于

    if-le                        小于等于

    if-gt                        大于

    if-ge                      大于等于

    eqz                        等于0

    nez                        不等于0

    ltz                          小于0

    gez                       大于等于0

    gtz                        大于0

    lez                        小于等于0

    相关文章

      网友评论

          本文标题:Android逆向——Smali语法

          本文链接:https://www.haomeiwen.com/subject/pfwssctx.html