类型,方法和域
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反编译-全部工具包"提供了一个便捷的方式,将所有必要的反编译工具集合在一起,使得开发者无需分别下载和配置各个工具。下面,我们将详细介绍这个工具包中包含的组件及其用途。 1. **Apktool**:Apktool是...
本文将详细介绍Android反编译工具及其在Android反向工程中的应用。 首先,让我们了解一下什么是Android反编译。反编译是将已编译的二进制代码转换回接近原始源代码的过程。对于Android应用,这意味着将Dalvik字节码...
本文将深入探讨“android 反编译smali工具”,包括smali、smali-1.4.2.jar、baksmali-1.4.2.jar以及baksmali这四个工具,它们在Android反编译流程中的作用和使用方法。 首先,我们要知道,Android应用程序主要由...
android反编译工具---逆向助手,详细了解请移步:http://blog.csdn.net/zxc514257857/article/details/78533913
标题中的“Android反编译工具包(最完整的Android反编译工具包)”表明这是一个集合了多种工具的资源包,用于帮助开发者和安全研究人员进行APK的反编译工作。 首先,让我们来了解一下反编译的基本概念。反编译是将已...
### Android 反编译与smali语法:ROM适配的关键技术 #### 一、引言 在Android开发领域,反编译技术与smali语法的应用是进行深度定制、ROM适配以及逆向工程的重要手段。smali作为一种中间语言,与dalvik虚拟机紧密...
### baksmali 下载使用 #### 资源下载 [source -> 资源下载](https://github.com/JesusFreke/smali) ...[Android反编译工具baksmali最新版的使用方法]( https://blog.csdn.net/qysh123/article/details/79023007)
8. **Androguard**:Androguard是一个开源的Android安全分析框架,可以用来分析APK文件,包括反编译DEX文件,提取类、方法和权限信息,还可以进行动态分析。 9. **Frida**:虽然主要是一个动态代码插桩工具,Frida...
Android反编译工具Apktool是一款强大的开源工具,主要用于安卓应用程序(APK)的解包、反编译、修改和重新打包。版本2.9.3是该工具的一个更新版本,提供了一些修复和改进,以增强用户体验和处理各种APK文件的能力。...
这篇“Android菜鸟日记25-android反编译”将带你走进Android反编译的世界,揭示APK背后的秘密。 首先,让我们了解什么是Android反编译。Android应用主要由Java语言编写,经过编译后生成Dalvik字节码(.dex文件),...
首先,`dex2jar`是一个开源项目,它由Pau1o典当创建并维护,目的是为Android开发者提供一个简单的方法来反编译.dex文件。`dex2jar-2.0`是其较新的版本,相比早期版本,它可能包含了一些改进和修复,以提高转换效率和...
本篇文章将详细介绍四个常用的Android反编译工具——Apktool、dex2jar、JD-GUI以及Smali2Java,并阐述它们各自的功能和使用场景。 1. Apktool Apktool是由IzzySoft开发的一款强大的Android反编译工具,它主要用于...
由于Android系统不直接支持Java字节码,因此反编译后的smali代码是理解APK行为的关键。通过编辑smali代码,我们可以对原始Java方法进行调整,实现代码注入、功能修改等目的。 同时,apk改之理还提供了与class文件...
本教程将围绕"android安卓app反编译apk反编译教程"这一主题,详细讲解如何进行APK反编译,以及涉及到的相关知识点。 首先,我们要理解什么是APK反编译。APK是Android应用的安装包,包含了应用的所有资源、代码和元...
在Android开发领域,有时我们需要对已有的APK文件进行反编译和二次打包,以便于研究其内部结构、修改代码或资源,甚至实现定制化的需求。"android反编译,二次打包一套工具"是一个集合了相关工具的压缩包,主要包含...
本文将深入探讨Android反编译的相关知识,包括为什么要反编译,常用的工具,以及如何使用这些工具。 一、为什么进行Android反编译 1. 安全分析:开发者或安全研究人员可以通过反编译来检查应用是否存在潜在的安全...
本压缩包"反编译-反混淆-jadx-1.2.0.48-012f7665.rar"提供了一款名为jadx的工具,这是一款专门针对Java和Android应用的反编译器。接下来,我们将详细探讨这两个主题及其关联的工具。 首先,让我们了解什么是反编译...
本篇文章将详细探讨三种常用的Android反编译工具:Apktool、dex2jar以及JD-GUI。 首先,Apktool是一款强大的Android资源反编译工具,由IzzySoft开发。它能够解包APK文件,提取出其中的XML布局文件、图片资源、字符...
除了dex2jar之外,还有一些其他的Android反编译工具,如Apktool用于解包和重新打包APK,Smali/Baksmali用于直接处理DEX文件,以及Frida和Xposed框架用于动态代码注入和调试。 7. **安全与防护**: 开发者可以通过...
这个“Android反编译工具合集”提供了几个关键的工具,帮助我们完成这样的任务。现在,我们将深入探讨这些工具的功能和使用方法。 1. **Apktool**: Apktool是一款强大的Android资源反编译工具,由Ivo Labs开发。...