Android如何对应用程序APK进行反编译?

apk反编译工具合集点击下载

其实在刚开始接触Android时就已经学过这门反编译技巧,只是当时没去作这方面的总结,最近公司要我去开发的项目都是照抄别家公司的,其UI效果都是一模一样的。那么问题来了,不知大家有没有这种感觉,做这行做久了,有些东西真是懒得去写,特别是自己会的,能拿来就用再好不过,例如layout布局,很多布局不管是简单的还是复杂的我们都可以去做,但是当自己会做的时候就没那么激情了,因为技术活变成了体力活,要我去模仿别家公司产品的UI,我这边还不如直接反编译一下这个产品就好了,直接拿到它的UI布局就可以使用,相当的舒服。

一,准备资源

首先这个技术是相当的简单,我们需要准备3个资源:
1、 apktool:这个目录用来获取资源文件
2、 dex2jar:这个目录用来将Android打包后的.dex文件转化为.jar包
.jar包实质就是Java编译后的.class文件集合,我们将后缀.jar改成.zip后解压里面可以看到里面的都是.class文件
3、 jd-gui.exe:将.class文件转化为.Java文件

二、使用方法(这里以反编译市面上的有信APK为例):

1、 将youxin.apk放到apktool文件根目录下,在命令行cd到apktool文件目录下 执行指令:apktool d youxin.apk(就是用apktool工具decode youxin.apk的意思),然后会在apktool目录生成该apk对应的相关文件,如下:
这里写图片描述
这里写图片描述
这里写图片描述
那么res下就是我们需要的布局资源,如下:
这里写图片描述
2、 将youxin.apk改成youxin.zip文件解压将看到,如下classes.dex文件:
这里写图片描述
这个文件就是存储这Android打包生成apk后的字节码,我们将该classes.dex文件解压到该dex2jar文件目录的根目录下,如下所示:
这里写图片描述
手提键盘,又没有鼠标,手有点抖,图不是截得很好…
接下来在命令行cd到该dex2jar文件目录下,执行命令: dex2jar classes.dex
这里写图片描述
将会在该目录下生成如上图classes_dex2jar.jar文件,我们将该jar包改成Zip文件打开解压器将看到如下目录:
这里写图片描述
这里写图片描述
这些.class文件就是在编译apk时dvk虚拟机对java文件打包生成的临时文件,这边可以清楚的看到项目的包名和当时写的Java文件名了
3、 那么最后一步就最为简单了,直接将生成的classes_dex2jar.jar文件拖进jd-gui.exe来就OK了,效果如图:
这里写图片描述
那么src下的源代码原原本本暴露出来。到此反编译结束

其实这家软件产品当日14年的时候,还并未作防止反编译、对代码进行加密混淆处理(现在就不清楚了),在经过加密混淆处理的apk,我们反编译出来res目录下的布局文件是不会乱码,可以拿得到,但是这个src下的java文件源代码,已为乱码,是看不懂的,关于这个加密混淆代码我已经总结再另一篇文章里面了,还没看过的朋友可以去android源码编译使用proguard文件进行混淆及错误总结这边看看。
其实上面的过程,已经有人将整个过程用脚本文件进行统一打包执行了,省去了我们很多麻烦事,相当的简单,具体使用方法如下:
下载打包好的资源,解压后打开目录如下图所示
这里写图片描述
这里写图片描述
这边我以我公司蓝牙BT项目为例,我们只需要将待反编译的apk文件拖到这个APKIDE打开窗口将会自动进行反编译操作, 由于蓝牙项目做了混淆加密操作,得到的Java文件是看不懂的乱码。

apk反编译工具打包合集点击下载

猜你喜欢

转载自blog.csdn.net/u013171283/article/details/78727779