安卓apk反编译

学习使人快乐,一些让你赏心悦目得app却没有开源代码,你该怎么去学习他呢?反编译似乎是一个不错得选择。当你有一套标准得反编译工具帮助你来反编译apk这样会使你的工作轻松很多,直接上步骤:

1,下载反编译工具,下载连接:https://download.csdn.net/download/qq_35539512/11268885

2,解压得到得压缩包如图:工具介绍:dex2jar主要是将dex文件转换成.jar文件,jd-gui用来读.jar文件,apktool.bat用来得到APK的资源文件。

安卓apk反编译_第1张图片

3,在D盘或者别的盘建一个apktool文件夹,将apktool.bat和apktool.jar文件放进去,然后cmd进入命令窗口,进入到apktool文件夹输入apktool最后命令窗口显示如下图则未成功

安卓apk反编译_第2张图片

4,打开dex2jar文件夹将文件夹中得lib文件夹和d2j_invoke.bat以及d2j_dex2jar.bat文件拷入到之前创建得apktool文件夹下

安卓apk反编译_第3张图片

最后你的文件夹应该如下图所示

安卓apk反编译_第4张图片

5,将dex文件转成.jar文件:工具已经准备好了该获取我们需要的代码了,先将要反编译的apk的后缀.apk改成.zip,然后解压这个压缩包你会得到classes.dex,classes2.dex,classes3.dex文件(debug版本的apk),如果是release版本的apk你解压后得到只有classes.dex,classes2.dex这两个文件。当然要将这几个生产的文件放到apktool文件夹下,然后再cmd窗口输入:d2j-dex2jar.bat classes.dex(或者d2j-dex2jar.bat classes2.dex,用这个你可以得到完整的项目代码),运行成功后你会得到一个classes-dex2jar.jar文件,然后打开jd-gui工具,选择这个jar文件即可看到app对应的代码了:安卓apk反编译_第5张图片

6,反编译资源文件,将app(test.apk)放到apktool文件夹下,再cmd窗口运行apktool.bat apktool d test.apk(或者.\apktool.bat apktool d test.apk),稍等一小会你会再apktool文件夹下得到一个test文件夹,再test文件夹中你可以获取app中得资源文件(图片,layout等)。

7,将资源文件生产apk:只需要在命令窗口输入apktool b test(apk生成资源文件夹的名称)。完成后你可以得到build文件夹以及dist文件夹,apk就在dist文件夹中。一般修改资源文件中的吗需要用到smali语言,如果是使用dex生成的.jar文件修改,则需要在修改.jar文件之后转成smali并放在资源文件夹中。

安卓apk反编译_第6张图片

8,给反编译的apk添加签名:步骤7生成的apk你会发现安装时出现解析失败,那是因为没有给APK添加签名,添加签名有几种方式第一种用auto-sign来添加,第二种用java的jarsigner来添加签名,个人比较偏向后面一种方法,首先你得去adnroid Studio生成一个自己的key.jks文件,安装java环境,一般安装在C:\Program Files中,然后用cmd窗口打开C:\Program Files\Java\jdk1.8.0_191\bin 输入jarsigner -help你会看到安卓apk反编译_第7张图片

然后直接输入jarsigner -verbose -keystore key.jks -signedjar D:tap_signed.apk -digestalg SHA1 -sigalg MD5withRSA  oribo.apk  123456(jarsigner -verbose -keystore (key的名字以及路径)-signedjar (生成的apk以及路径) -digestalg SHA1 -sigalg MD5withRSA (要进行签名apk的名字以及路径)  (key的别名)),注意:最好将key和原APK放在java的bin文件夹中,然后生成路径最好放在D盘下面。最好成功你会得到下图:

安卓apk反编译_第8张图片

9,总结:这种程度的反编译只适合用来反编译debug版本和release版本的apk,当然release版本的apk加了混淆得到的代码会有字母替代类名和方法名的问题。如果你要反编译的apk经过加固处理,你将不能获取完整的项目代码。有兴趣的朋友可以试一试,能深刻体会到混淆和加固对apk的重要性。

(注:以上是window教程,如果用的是mac电脑则需要将dex2jar中的.bat文件用.sh文件替换,包括后面的窗口命令)

你可能感兴趣的:(android)