smali学习(一)
来源:互联网 发布:挺进地牢数据 编辑:程序博客网 时间:2024/05/16 11:12
1. dalvik字节码有两种类型,原始类型和引用类型。对象和数组是引用类型,其它都是原始类型。
原始类型如下
V void,只能用于返回值类型
Z boolean
B byte
S short
C char
I int
J long(64位)
F float
D double(64位)
对象类型表示如下
对象以Lpackage/name/ObjectName;的形式表示。前面的L表示这是一个对象类型,package/name/是该对象所在的包,ObjectName是对象的名字,“;”表示对象名称的结束。相当于java中的package.name.ObjectName。例如:Ljava/lang/String;相当于java.lang.String
数组的表示
[I——表示一个整型一维数组,相当于java中的int[]。
对于多维数组,只要增加[就行了。[[I相当于int[][],[[[I相当于int[][][]。注意每一维的最多255个。
对象数组的表示:[Ljava/lang/String;表示一个String对象数组。
方法
表示形式:Lpackage/name/ObjectName;->MethodName(III)Z
Lpackage/name/ObjectName;表示类型,MethodName是方法名。III为参数(在此是3个整型参数),Z是返回类型(bool型)。注意对象后面的冒号
方法的参数是一个接一个的,中间没有隔开。
一个更复杂的例子:
method(I[[IILjava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
在java中则为:
String method(int, int[][], int, String, Object[])
字段
表示形式:
Lpackage/name/ObjectName;->FieldName:Ljava/lang/String;
即包名,字段名和各字段类型。
接下来将学习寄存器的概念
- smali学习(一)
- Smali语法汇总(一)
- Smali语法汇总(一)
- smali 学习笔记 1)
- Smali 学习
- android Smali静态分析(一)
- Smali--Dalvik虚拟机指令语言-->【android_smali语法学习一】
- Smali--Dalvik虚拟机指令语言-->【android_smali语法学习一】
- Smali--Dalvik虚拟机指令语言-->【android_smali语法学习一】
- Smali--Dalvik虚拟机指令语言-->【android_smali语法学习一】
- Smali--Dalvik虚拟机指令语言-->【android_smali语法学习一】
- Smali--Dalvik虚拟机指令语言-->【android_smali语法学习一】
- Smali--Dalvik虚拟机指令语言-->【android_smali语法学习一】
- Smali--Dalvik虚拟机指令语言-->【android_smali语法学习一】
- Smali--Dalvik虚拟机指令语言-->【android_smali语法学习一】
- Smali--Dalvik虚拟机指令语言-->【android_smali语法学习一】
- Smali--Dalvik虚拟机指令语言-->【android_smali语法学习一】
- Android smali 语法一
- linux内核中的__read_mostly变量
- binder
- 谈SEH( structured exception handling )异常处理
- Unity3D 项目用 git 做版本控制
- jquery-ui 里面的datepicker插件的弹不出来
- smali学习(一)
- Struts2开发步骤
- c#combobox中根据combobox1中的id得到combobox2中的选项,但是当1级下的2级菜单为空时,2级还是会显示一级的数据
- 自己测到的Buu IP
- 详细解析WSAEventSelect模型
- iOS开发多线程篇—线程的状态
- maven for android
- 第十三周项目一--动物这样叫
- Android优秀开源项目(一)