初步了解smali文件

准备工作
smali下载地址
https://bitbucket.org/JesusFreke/smali/downloads
环境变量的配置这里不解释

编写Main.java文件

public class Main {
    public static void main(String[] args){
        System.out.println("Hello World");
    }
}

接着编译Main.java为Main.class

javac Main.java

然后将Main.class转成Main.dex

java -jar dx.jar --dex --output=Main.dex Main.class

最后将Main.dex转成Main.smali文件

java -jar baksmali-2.1.3.jar Main.dex

最终文件生成

在out文件夹里就有Main.smali文件

#定义类名
.class public LMain;
#定义父类
.super Ljava/lang/Object;
.source "Main.java"


# direct methods
.method public constructor <init>()V
    .registers 1

    .prologue
    .line 2
    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    return-void
.end method

#声明静态main()方法
.method public static main([Ljava/lang/String;)V
    .registers 3

    .prologue
    .line 4
    sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;

    const-string v1, "Hello World"

    invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V

    .line 5
    return-void
.end method
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容