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

apk 反编译 java_Android apk反编译成java源码实战操作全指南写在前面本文参照教程:AndroidAPK反编译就这么简单详解(附图)]如何在大量jar包中搜索特定字符主要记录apk反编译成java源码过程及遇到的问题工具包百度网盘下载地址在后面本教程截止2017.09.08亲测可跑通环境说明win7javajdk1.8.0apktool2.2.2反编译工具用于资源文件的获取,可以提取出图片文件和布局文件进行查看dex2jar-0.0.9.15…

写在前面

本文参照教程:

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放入同一文件夹下。

82379c74b676a0a1afdf6b0c8f09ecd0.png

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

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

apktool d -f xiaominew.apk -o xiaominew

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

apk反编译成java源码

解压缩apk

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

f2bd7f5847767c9628cde010534b4234.png

解压缩生成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 文件

cce5e59fec81e9690945f1b19c1f5490.png

生成clasess_dex2jar.jar

解压缩.jar文件

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

ae29462f422a99ef6866bcf4de28b4cb.png

生成.jar文件夹

06c8167f0af9a24e24c603df558caa84.png

.clsss文件

使用jad工具生成.java文件

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

b8a41b5e63339d661428db8243a1aa88.png

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源码完毕。

a4abc155ec3f4d0d3653ce86e1f65053.png

生成了新新新新新来的

6d7355457fe06077c9b0f52098389192.png

新新新来的里面和外边的是一样的

c466f3a62700800569354cee42a3ea61.png

但是新新新来的里面已经是java文件啦

搜索字符串

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

43619af72a39cf2eda5b30c04baf202b.png

工具下载

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

89f96e6e8b38504d40528f6f09c31bbb.png

sdfsdfaaasdfsadfsdafas.png

问题说明

Exception in thread “main” brut.androlib.AndrolibException: Could not decode arsc file

需要升级APK2,0.0以上版本

21a747088ab77f4ef729a7eb3007bc87.png

Exception in thread “main” brut.androlib.AndrolibException: Could not decode arsc file

apk 2.2.2命令结构更改了,下图的输入方式是错误的

baa4c8312deb6daf7397562bbcd1c731.png

错误的输入方式

正确的输入方式:

apktool d -f xiaomi.apk -o foldername

fe8bc55d370541d2f6e24e648352f806.png

正确的输入方式

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/34261.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注