分析Android APK- smali 语言简介
2.1 smali 语言简介 1.smali apk文件通过apktool反编译出来的都有一个smali文件夹,里面都是以.smali结尾的文件。 smali语言是Davlik的寄存器语言,语法上和汇编语言相似,Dalvik VM与JVM的最大的区别之一就是Dalvik VM是基于寄存器的。基于寄存器的意思是,在smali里的所有操作都必须经过寄存器来进行。 2.基本数据类型 B—byte C—char D—double F—float I—int S—short V—void J—long Z—boolean 注意J、Z两个不是对应类型的首字母; 在dalvik字节码中,寄存器都是32位的,能够支持任何类型,Long和Double类型是64位的,需要2个寄存器; V 只能用于返回值类型; 3.数组和对象是引用类型 数组的表示方式是在基本类型前加上前中括号“[”,例如int数组和float数组分别表示为:[I、[F; 对象类型以L作为开头来表示,格式是Lpackage/ClassName;(用分号表示对象结束是必须的),示例: String对象在smali中为:Ljava/lang/String; Class1对象的一个boolean成员表示为:Lcom/disney/Class1;->isRunning:Z Class1对象的一个String对象成员表示为:Lcom/disney