Android apk反编译成java源码实战操作全指南
写在前面
本文参照教程:
Android APK反编译就这么简单 详解(附图)]
如何在大量jar包中搜索特定字符
主要记录apk反编译成java源码过程及遇到的问题
工具包百度网盘下载地址在后面
本教程截止2017.09.08亲测可跑通
环境说明
- win7
- java jdk1.8.0
- apktool2.2.2 反编译工具 用于资源文件的获取,可以提取出图片文件和布局文件进行查看
- dex2jar-0.0.9.15 将apk反编译成java源码(classes.dex转化成jar文件)
- jad 1.4 反编译成java源码
- FileLocatorPro_x64 快速搜索工具
反编译步骤
- 反编译得到程序的源代码、图片、XML配置、语言资源等文件
- 使用apktool2.2.2 反编译得到资源文件的获取
- 反编译得到Java源代码
- 将apk解压得到classes_dex文件
- 使用dex2jar-0.0.9.15操作 classes_dex 生成.jar文件
- 将jar文件解压得到.class文件
- 使用jad工具将.class文件转换为.java文件
- 使用搜索工具全局搜索正则匹配关键字
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
文件
解压缩.jar文件
将上一步骤生成的.jar文件右键解压缩生成对应文件夹。该文件夹中即为对应的.class文件
生成.jar文件夹 .clsss文件使用jad工具生成.java文件
从网上下载jad工具jad download,解压后会有jad.exe;
这个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源码主要是为了去里面查找某些字符串,所以这就需要一个可以快速查找大量文件的工具,在windows平台使用了Filelocator
简直好用到哭,该工具可以快速查找,支持字符串查找,正则匹配等多种方式。通过输入文件名称,匹配文本,查找位置,点击右边的开始即可快速查找。
工具下载
整理了本文中所用的工具,上传到了百度网盘上,apk反编译工具集合下载密码:9fn8。压缩包中文件内容如图所示:
问题说明
-
Exception in thread "main" brut.androlib.AndrolibException: Could not decode arsc file
需要升级APK2,0.0以上版本
-
Exception in thread "main" brut.androlib.AndrolibException: Could not decode arsc file
apk 2.2.2命令结构更改了,下图的输入方式是错误的
错误的输入方式
正确的输入方式:
apktool d -f xiaomi.apk -o foldername
正确的输入方式
个人博客:
进击的程序茗