类型,方法和域
dalvik 字节码关于类型,方法和域的基本信息
类型 Types
dalvik字节码有两种主要的类型,值类型(原始类型)和引用类型。引用类型时对象和数组,其他的都是值类型。
原始类型用一个单独的字母表示。你可以从AOSP找到delvik字节码每个字母所代表的原始类型:dalvik/docs/dex-format.html
V |
void - can only be used for return types |
Z |
boolean |
B |
byte |
S |
short |
C |
char |
I |
int |
J |
long(64bits) |
F |
float |
D |
double(64bits) |
对象类型的格式类似于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[]
方法 Methods
方法的描述总是包括:包含此方法的类型,方法的名称,参数的类型,返回的类型。所有的这些信息是为了虚拟机能够找到正确的方法,并能够在字节码上执行静态分析(达到检查和优化的目的)。
格式为:
Lpackage/name/ObjectName;->MethodName(III)Z
在这个例子中,你能够知道Lpackage/name/ObjectName是一个类型,很明显MethodName是方法名,(III)Z是改方法的特征,III是方法的三个参数(在这个例子中是三个整数),Z是改方法的返回值(bool)。
下面是一个复杂的例子:
method(I[[IILjava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
在java中,它的意思是:
String method(int, int [] [] , int, String, Object[] )
域 Fileds
域总是描述成包含:包含此域的类型,域的名字,域的类型。再一次说明,这样描述是为了虚拟机能够正确的找到这个域,同样的是为了执行字节码静态分析。
格式为:
Lpackage/name/ObjectName;->FileName:Ljava/langString;
这个很容易解释 ,三部分分别是:包名,域名,域名的类型。
参考官方原文:
http://code.google.com/p/smali/wiki/TypesMethodsAndFields
分享到:
相关推荐
android 反编译工具,包括smali ,smali-1.4.2.jar,baksmali-1.4.2.jar,baksmali四个工具
android反编译工具---逆向助手,详细了解请移步:http://blog.csdn.net/zxc514257857/article/details/78533913
Android 反编译和smali语法用于ROM适配
### baksmali 下载使用 #### 资源下载 [source -> 资源下载](https://github.com/JesusFreke/smali) ...[Android反编译工具baksmali最新版的使用方法]( https://blog.csdn.net/qysh123/article/details/79023007)
android安卓app开发之用AndroidStudio反编译apk.zip
Android反编译工具合集,里面包含了apktool、dex2jar、jdgui、Smali2Java 更新:jdgui
Android反编译工具合集,里面包含了apktool、dex2jar、jdgui、Smali2Java
使用如下命令,得到classout文件夹,即classes.dex的全部反编译文件,后缀名都为xxx.smali。 java -jar baksmali-1.3.0.jar -o classout/ classes.dex 3、用smali-1.3.0.jar编译classout成classes.dex 通过上面...
android安卓app反编译apk反编译教程.zip
android反编译,二次打包一套工具
我们在开发 安卓中,有时需要对其他apk文件进行反编译,以便我们方便进行学习...我们对其进行反编译后 可以发现 会有Smali后缀名的文件。我们怎么对他进行反编译城Java文件,并让我们看懂呢?下面进行一下简单介绍:
Android动态调试逆向反编译smaliAndroid动态调试逆向反编译smaliAndroid动态调试逆向反编译smali
smali2java使用apktool对dex中需要翻译的smali代码进行反编译,增加了难度和错误率,降低了手工分析的速度。此外,它们之间的相互作用很差,增加了人工分析的难度。商业jeb虽然具有较好的交互性,但在用multi
AndroidAPK反编译工具 apktool jd-gui dex2jar smali
Android中java和smali转化一键化操作工具Android反编译工具合集,里面包含了apktool、dex2jar、jdgui、Smali2Java
这个压缩包收集了APK反编译常用的4个工具,可以节省大家收集的时间,直接拿来用吧。用这套工具,一般的APK源码基本都可以看。 所有APK反编译工具都是依托apktool的,所以他的版本很重要,1.X的版本基本都会反编译...
反编译工具合集,apktool_2.0.2、Smali2Java、dex2jar、jd-gui-0.3.5.windows-apk,内包括基本使用方法与资源博客,高版本apktool可解决反编译过程中出现的常见错误。
Android反编译并签名打包需要的文件,可以实现反编译apk,生成smali,重新签名打包
android反编译看java代码工具,可以看apk反编译的smali文件
通过精简Smali语法细节来增强反编译代码阅读性,自定义了一种简单语法