2.解压这两个下载到的文件到某个文件夹(例如 E 盘根目录)。 确保解压缩后得到的
aapt.exe,apktool.bat,apktool.jar 在同一个文件夹下。
3.将要破解的.apk 文件也放入到这个文件夹中来。
4.运行 CMD,用 cd 命令转到这几个文件所在文件夹,输入 apktool,假如列出一些帮
助的话就成功了(解释
d 为加压 第一个路径为你的 apk 所在的位置。第二个是要输出的位
置)
apktool d XXX.apk ABC 反编译 XXX.apk 到文件夹 ABC (必须确保当前目录下没有 ABC
这个文件夹,否则会报错)
5. 解压后的文件夹中可以得到 apk 中的 xml 配置文件。
其实用这个方法会得到一个
smali 文件夹,进去看,用记事本打开其中的一个.smali 文
件,通过解读里面的信息,就可以一窥代码的全貌,就是有点费力。下面我们通过一个实例
来对比一下
.smali 和.java 源代码的对照吧:
ApkInstaller.smali 文件:
1
.class public Lcom/tutor/apkinstaller/ApkInstaller; .super Landroid/app/Activity;
2
.source "ApkInstaller.java" # instance fields
3
.field private apkWeb:Landroid/webkit/WebView; # direct methods
4
.method public constructor <init>()V .registers 1
5
.prologue .line 8
6
invoke-direct {p0}, Landroid/app/Activity;-><init>()V return-void
7
.end method # virtual methods
8
.method public onCreate(Landroid/os/Bundle;)V .registers 5
9
.parameter "savedInstanceState" .prologue
10
.line 13 invoke-super {p0, p1}, Landroid/app/Activity;-
>onCreate(Landroid/os/Bundle;)V
11
.line 14 const/high16 v2, 0x7f03
12
invoke-virtual {p0, v2}, Lcom/tutor/apkinstaller/ApkInstaller;->setContentView(I)V
.line 15
13
const/high16 v2, 0x7f05
invoke-virtual {p0, v2},
Lcom/tutor/apkinstaller/ApkInstaller;->findViewById(I)Landroid/view/View;
14
move-result-object v2 check-cast v2, Landroid/webkit/WebView;
15
iput-object
v2,
p0,
Lcom/tutor/apkinstaller/ApkInstaller;-
>apkWeb:Landroid/webkit/WebView; .line 16
16
iget-object
v2,
p0,
Lcom/tutor/apkinstaller/ApkInstaller;-
>apkWeb:Landroid/webkit/WebView; invoke-virtual {v2}, Landroid/webkit/WebView;-
>getSettings()Landroid/webkit/WebSettings;
17
move-result-object v1 .line 17
18
.local v1, webSettings:Landroid/webkit/WebSettings; const/4 v2, 0x1
19
invoke-virtual {v1, v2}, Landroid/webkit/WebSettings;->setJavaScriptEnabled(Z)V