smali文件对比java文件:
.class :类名
.super :父类
.source :源文件名
.implements :继承的接口
.field :类成员变量
.method :类方法
.parameter :函数参数 p1,p2...
.locals x :局部变量(个数)
const/16 v0, 0x64 :int v0 = 0x64
const/high16 v0, 0x7f03 :高16赋值
const-wide v0, 0x4024051eb851eb85L
const-string v0, "1111" :字符串
add-int v0, p0, p1 :v0 = p0 + p1(static函数参数 从p0 开始)
sub-int v0, p1, p2 :v0 = p1 + p2(普通成员函数参数从 p1 开始)
mul-int v0, p1, p2 :v0 = p1 * p2
div-int v0, p1, p2 :v0 = p1 / p2
add-int/2addr v0, v1 :v0+v1放到 v0所在的地址
sub-int/2addr v0, p2 :v0-p2放到 v0所在的地址
if-ne :if(x != y)
iput-object v0, p0, Lcom/xyz/smali/SmaliActivity;->string:Ljava/lang/String; :成员变量 v0 = string;
iget-object v0, p0, Lcom/xyz/smali/SmaliActivity;->mBtn:Landroid/widget/Button; :关联成员变量
sput v0, Lcom/xyz/smali/SmaliActivity;->OK:I :sput 给static变量赋值
sput-wide v0, Lcom/xyz/smali/SmaliActivity;->dou:D :sput-wide 给static的宽字节变量赋值
sput-object v0, Lcom/xyz/smali/SmaliActivity;->sss:Ljava/lang/String;
sget v1, Lcom/xyz/smali/SmaliActivity;->OK:I :关联static变量
invoke-super {p0, p1}, Landroid/app/Activity;->onCreate(Landroid/os/Bundle;)V : this.super.onCreate();
invoke-static {p1, p2}, Lcom/xyz/smali/SmaliActivity;->add(II)I :调用静态函数 add(p1, p2)
invoke-virtual {v0, p0}, Landroid/widget/Button;->setOnClickListener(Landroid/view/View$OnClickListener;)V :调用虚函数
move-result v0 :前面调用函数后,把结果放到 v0
move-result-object v0 :前面调用函数返回的对象给 v0
check-cast v0, Landroid/widget/Button; :强制类型转换 mBtn = (Button) findViewById(R.id.btn);
return-void :return ;
分享到:
相关推荐
将Android 的Dex文件转换为smali文件。此工具是用来将Java代码编译后的class文件 再由Android SDK的dx.jar生成dex文件之后。将dex转换为Smali文件的工具.供代码对比学习。
它可能是一个命令行工具,接收Java源文件作为输入,输出对应的Smali文件。使用该工具,开发者可以深入理解代码执行的细节,这对于调试、优化或者安全审计非常有用。 3. **项目结构**:"java2smali-master"这个...
当一个Java应用程序被编译成.dex(Dalvik Executable)文件后,其实质是转换成了Smali代码。这种转换过程由DX工具完成,它将字节码转换为Smali指令,便于DVM执行。 Java是一种高级编程语言,具有丰富的类库和面向...
在反编译过程中,我们可以通过比较Java和Smali代码来了解原始Java代码是如何被转换成机器可理解的形式的。这对于理解和优化Android应用性能、查找安全漏洞或进行代码混淆有重要意义。不过,要注意的是,对Smali的...
通过baksmali可以将DEX文件反编译为.smali文件,而smali则可以将.smali文件编译回DEX文件。这一过程对于理解和修改Android应用程序非常有用。 ##### 2.2 使用apktool Apktool是一个强大的Android APK文件反编译和...
当一个Android应用的APK被反编译后,Java类文件会转换成smali文件,这些文件包含了一系列可执行的指令,用于在DVM上运行。"smali_out"目录下通常包含了APK的所有类和方法的smali代码。 逆向工程的核心是理解smali...
教程目录复制下面的链接打开后...6、 反编译修改xml文件和smali文件 7、 配置文件和系统框架详解 8、 作业讲解与案例app 9、Java代码与smali汇编对比分析(1) 10、Java代码与smali汇编对比分析(2) 11: 实战分析app等
Smali文件转Java;So文件查看字符常量; ·工具箱(常见字符串转换,如base64、des、md5、16进制、Unicode、去空白等); · 一键添加Xposed检测,一键添加弹窗、对话框; · axml反编译/回编译、arsc文件查看字符...
Smali文件通常用于Android应用的反编译和修改,因为它们提供了一种比Java更底层的代码视角。这种底层的表示形式使得开发者可以阅读和修改代码,甚至可以在不了解Java的情况下进行操作。 当我们提到smali代码时,...
Smali文件转Java;So文件查看字符常量; ·工具箱(常见字符串转换,如base64、des、md5、16进制、Unicode、去空白等); · 一键添加Xposed检测,一键添加弹窗、对话框; · axml反编译/回编译、arsc文件查看字符...
在本案例中,"Wechat6.3.31smali"是一个已经反编译完成的微信版本,它的每个.smali文件对应了原始的Java类文件,提供了一个深入研究微信内部结构的窗口。 在描述中提到的“smali断点”是逆向工程中的一个重要概念。...
【标题】"smail2java" 是一个专为Android开发者设计的反编译工具,它主要功能是将APK文件中的Smali代码转换为Java源代码。Smali是一种基于Dalvik虚拟机的汇编语言,当对APK进行逆向工程时,通常会遇到这种格式的代码...
ApkTool助手是一款集成了android apk编译、ADB调试、转换签名文件、smali文件编辑等功能于一体的软件。软件可以直接运行,无需安装。 其中apk编译功能依赖apktool,需要Java环境支持;ADB调试功能需要ADB环境支持...
通过比较反编译后的 smali 代码和实际编写的 Java 源码,可以更加深入地理解 dex 文件的内部结构和 Dalvik 虚拟机执行的机制。 在学习和研究 dex 文件格式时,参考的官方文档极为重要。本例中提及了 Android Open ...
3. **跳转到源码**:在查看反编译后的smali代码时,可以快速跳转到对应的Java源码,便于对比分析。 4. **集成调试器**:smalidea集成了smali代码的调试器,允许开发者在反编译后的代码上设置断点,进行单步调试,...
APK文件内部包含一个或多个DEX(Dalvik Executable)文件,这些DEX文件存储了Java字节码,经过优化后供Android的Dalvik或ART(Android RunTime)虚拟机执行。本篇将详细讲解如何对APK文件中的DEX文件进行拆分,并...
在Dex文件分析中,通过比较main方法的实际执行代码与smali反编译后的代码可以理解Dalvik字节码的工作原理。smali是Dalvik字节码的一种汇编语言,通过smali代码可以更直观地理解Dex中的执行逻辑。 上述内容是对Dex...
在上述内容中,通过分析main方法的执行代码,并与smali反编译结果进行比较,可以更好地理解Dex文件中代码的执行流程。 此外,Dex文件格式分析还需要一个测试环境。在上述内容中,提到了测试环境为Ubuntu 12.04 64-...
在Android系统中,`.odex`(Optimized Dalvik Executable)文件是Dalvik虚拟机执行的优化后的字节码,而`.dex`(Dalvik Executable)文件...同时,转换过程可能会比较复杂,需要一定的Smali语法知识和命令行操作经验。