background image

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