会在当前目录下生成class-dex2jar.jar文件
然后打开jd-gui,将class-dex2jar.jar文件拖进去,就可以看到反编译出来的源代码。
可以看到反编译的代码和原本的代码差别不大,主要差别是原来的资源引用全都变成了数字。
下面我们来修改这个apk的内容。
首先我们将apk拷贝到apktool工具目录下,执行命令apktool d app-release.apk。
生成的目录中包含smali文件夹
然后找到我们的主要的类MainActivity.smali,文件内容如下:
.class public Lcom/viclee/decompiledemo/MainActivity;
.super Landroid/support/v7/app/AppCompatActivity;
.source "MainActivity.java"
# interfaces
.implements Landroid/view/View$OnClickListener;
# static fields
.field private static final TAG:Ljava/lang/String; = "MainActivity"
# instance fields
.field private btn:Landroid/widget/Button;
# direct methods
.method public constructor <init>()V
.locals 0
.prologue
.line 9
invoke-direct {p0}, Landroid/support/v7/app/AppCompatActivity;-><init>()V
return-void
.end method
# virtual methods
.method public onClick(Landroid/view/View;)V
.locals 2
.param p1, "v" # Landroid/view/View;
.prologue
.line 23
const-string v0, "MainActivity"
const-string v1, "Button is clicked"
invoke-static {v0, v1}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
.line 24
return-void
.end method
.method protected onCreate(Landroid/os/Bundle;)V
.locals 1
.param p1, "savedInstanceState" # Landroid/os/Bundle;
.prologue
.line 14
invoke-super {p0, p1}, Landroid/support/v7/app/AppCompatActivity;->onCreate(Landroid/os/Bundle;)V
.line 15
const v0, 0x7f040019
invoke-virtual {p0, v0}, Lcom/viclee/decompiledemo/MainActivity;->setContentView(I)V
.line 17
const v0, 0x7f0c0050
invoke-virtual {p0, v0}, Lcom/viclee/decompiledemo/MainActivity;->findViewById(I)Landroid/view/View;
move-result-object v0
check-cast v0, Landroid/widget/Button;
iput-object v0, p0, Lcom/viclee/decompiledemo/MainActivity;->btn:Landroid/widget/Button;
.line 18
iget-object v0, p0, Lcom/viclee/decompiledemo/MainActivity;->btn:Landroid/widget/Button;
invoke-virtual {v0, p0}, Landroid/widget/Button;->setOnClickListener(Landroid/view/View$OnClickListener;)V
.line 19
return-void
.end method














