初步了解smali文件

2016-07-29  本文已影响151人  Andy周

准备工作
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
上一篇下一篇

猜你喜欢

热点阅读