smail格式
来源:互联网 发布:统计建模与r软件 编辑:程序博客网 时间:2024/06/18 20:12
Smali代码是Android的Dalvik虚拟机的可执行文件DEX文件反汇编后的代码。所以Smali语言就是Dalvik的反汇编语言。?
可以看到,final形成员变量是在初始化之前就初始化的
使用Apktool反编译apk?文件后,会在反编译工程目录下生成一个smali?文件夹,里面存放着所有反编译出的smali?文件,这些文件会根据程序包的层次结构生成相应的目录,程序中所有的类都会在相应的目录下生成独立的smali?文件
Smali语法格式可参考:
http://bbs.pediy.com/showthread.php?p=1117963
通过dex文件,我们可以反编译生成对应的smail,我们看下前面dex文件对应的smail文件
.class public LTest2;.super Ljava/lang/Object;.source "Test2.java".field public final static mStatic:I = 1111111111.field public static mStatic2:I.field public anum:I.field public minstance:Ljava/lang/String;.method static constructor <clinit>()V .registers 1 .prologue .line 7 const v0, 222222222 sput v0, LTest2;->mStatic2:I return-void.end method.method public constructor <init>()V .registers 2 .prologue .line 5 invoke-direct { p0 }, Ljava/lang/Object;-><init>()V .line 8 const-string v0, "asdf" iput-object v0, p0, LTest2;->minstance:Ljava/lang/String; .line 9 const/4 v0, 1 iput v0, p0, LTest2;->anum:I return-void.end method.method public static main([Ljava/lang/String;)V .registers 3 .prologue .line 14 sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream; const-string v1, "Hello, world" invoke-virtual { v0, v1 }, Ljava/io/PrintStream;->println(Ljava/lang/String;)V .line 15 return-void.end method可以看到smail文件还是比较直观的
可以看到,final形成员变量是在初始化之前就初始化的
static形成员变量是在<clinit>中初始化的
非static形成员变量是在<init>函数中初始化的
这里有三个函数
<clinit>:在jvm第一次加载class文件时调用,包括静态变量初始化语句和静态块的执行
<init>:在实例创建出来的时候调用,包括调用new操作符;调用Class或Java.lang.reflect.Constructor对象的newInstance()方法;调用任何现有对象的clone()方法;通过java.io.ObjectInputStream类的getObject()方法反序列化
具体的指令可以参考如下连接
http://blog.csdn.net/dd864140130/article/details/52076515
http://pallergabor.uw.hu/androidblog/dalvik_opcodes.html
0 0
- smail格式
- smail 字节码格式
- smail语法
- smail指令参考
- smail语法记录
- Smail语法基本知识(一)
- Smail语法基本知识(二)
- Smail语法基本知识(三)
- smail指令参考
- 【转】smail语法详解
- smail语法 详解
- smail基本语法
- smail文件语法
- Android 静态分析smail
- smail语法 详解
- smail语句学习
- smail语法 详解
- Android 反编译之smail
- 如何在Linux环境创建GRE Tunnel
- js构建集合对象数据,java Gson直接转出对象类型的list接收
- 粒子滤波计算过程
- php二分查找法实例
- DataBinding 使用教程 一
- smail格式
- Python selenium
- Sed 与Awk (第二版)学习笔记
- c++头文件
- 【转】汉字编码常识
- Mac电脑上安装多版本的Python
- ORA-14400: 插入的分区关键字未映射到任何分区
- 常用 Git 命令清单
- React是什么