Android开发之KotlinAndroid进阶之路android技术专栏

Android apk反编译成java源码实战操作全指南

2017-09-08  本文已影响1110人  进击的程序茗

写在前面

本文参照教程:
Android APK反编译就这么简单 详解(附图)]
如何在大量jar包中搜索特定字符
主要记录apk反编译成java源码过程及遇到的问题
工具包百度网盘下载地址在后面
本教程截止2017.09.08亲测可跑通

环境说明

反编译步骤

apktool2.2.2 反编译得到源代码、图片、XML配置等文件

解压从网上下载的apktool2.2.2工具 ,将下载的apk放入同一文件夹下。

在当前文件夹下调用cmd,执行命令

//apktool d -f [apk名字] -o  [输出文件夹名字]
apktool d -f xiaominew.apk -o  xiaominew

则在当前文件夹中就会生成xiaominew文件夹,里面是反编译出来的一些文件。我这边主要是要编译到java源码,然后从源码中查找一些东西,所以我主要采用的是下面的方法。

apk反编译成java源码

解压缩apk

网上说对于下载下来的xx.apk需要先把其后缀名改成.zip。然后对其解压缩,我是直接将xx.apk解压缩了。解压缩后的文件结构如下(以小米手机浏览器的apk为例):

解压缩生成classes.dex

生成.jar文件

在上一步骤中我们解压缩可以拿到classes.dex文件,此时我们去dex2jar-0.0.9.15的文件夹下,调用命令行cmd,执行命令如下(路径请更改):

dex2jar.bat  E:\1\tool\apktool2.2.2\xiaominew\classes.dex   

此时再xiaominew的文件夹下生成了clasess_dex2jar.jar 文件

生成clasess_dex2jar.jar

解压缩.jar文件

将上一步骤生成的.jar文件右键解压缩生成对应文件夹。该文件夹中即为对应的.class文件

生成.jar文件夹 .clsss文件

使用jad工具生成.java文件

从网上下载jad工具jad download,解压后会有jad.exe;

5.png
这个jad.exe要使其全局生效,需要配环境变量,我这边是直接将其放到了jdk的bin文件夹下,因为该文件夹已被配置到了环境变量中,将jad.exe放入后即可全局使用。同样我们进入刚才的classes_dex2jar的文件夹里,调用当前命令行cmd,执行命令完成后,在classes_dex2jar的文件夹里会有新生成的文件夹
//jad -o -r -s java -d [生成文件名] [class路径]
jad -o -r -s java -d src ./**/*.class

为了方便区本我执行的命令是jad -o -r -s java -d newnewnewcomes ./**/*.class(新新新新来的)
从图中我们可以看出在classes_dex2jar的文件夹中生成了newnewnewcomes,进入newnewnewcomes里面的文件变成了.java形式,至此,反编译为java源码完毕。

生成了新新新新新来的 新新新来的里面和外边的是一样的 但是新新新来的里面已经是java文件啦

搜索字符串

我这边反编译成java源码主要是为了去里面查找某些字符串,所以这就需要一个可以快速查找大量文件的工具,在windows平台使用了Filelocator简直好用到哭,该工具可以快速查找,支持字符串查找,正则匹配等多种方式。通过输入文件名称,匹配文本,查找位置,点击右边的开始即可快速查找。

工具下载

整理了本文中所用的工具,上传到了百度网盘上,apk反编译工具集合下载密码:9fn8。压缩包中文件内容如图所示:

sdfsdfaaasdfsadfsdafas.png

问题说明

  1. Exception in thread "main" brut.androlib.AndrolibException: Could not decode arsc file
    需要升级APK2,0.0以上版本
  1. Exception in thread "main" brut.androlib.AndrolibException: Could not decode arsc file
    apk 2.2.2命令结构更改了,下图的输入方式是错误的
    错误的输入方式
    正确的输入方式:
    apktool d -f xiaomi.apk -o foldername
    正确的输入方式

个人博客:
进击的程序茗

上一篇下一篇

猜你喜欢

热点阅读