初识[android逆向] smali

初识[android逆向] smali,烦请各位大佬多多海涵,小萌新一枚。

smali文件:

无论是普通类、抽象类、接口类或者内部类,在反编译出的代码中,它 们都以单独的smali 文件来存放。每个 smali 文件都由若干条语句组成, 所有的语句都遵循着一套语法规范。

1.描述类的信息

.class < 访问权限> [ 修饰关键字] < 类名>

.super < 父类名>

.source <源文件名>

2. 静态字段

  #stantic fields

.field < 访问权限> static [ 修饰关键字] < 字段名>:< 字段类型>

3.实例字段

  #instance fields

.field < 访问权限> [ 修饰关键字] < 字段名>:< 字段类型>

4.直接方法

#direct methods

.method <访问权限> [ 修饰关键字] < 方法原型>

<.locals> “.locals ”指定了使用的局部变量的个数

[.param] “.param”指定了方法的参数

[.prologue] “.prologue ”指定了代码的开始处

[.line]         “.line ”指定了该处指令在源代码中的行号

<代码体>

.end method

5. 虚方法的声明与直接方法相同,只是起始处的注释为“virtual methods”。

6.接口

# interfaces

  .implements < 接口名>“.implements ”是接口关键字,后面的接口

  名是 DexClassDef 结构中 interfacesOff 字段指定的内容。

7.注解

  # annotations

  .annotation [ 注解属性] < 注解类名>

[ 注解字段 = 值]

  .end annotation

  注解的作用范围可以是类、方法或字段。如果注解的作用范围是类,  “.annotation ”指令会直接定义在 smali 文件中,如果是方法或字段,“.annotation ”指令则会包含在方法或字段定义中。

你可能感兴趣的:(初识[android逆向] smali)