Android 通过使用apktool来反编译apk并进行二次打包

版权声明:转载请声明: https://blog.csdn.net/MingJieZuo/article/details/82661713

####一、概述

本节主要简单的介绍下,如何使用apktool来反编译apk,并进行二次打包,也就是我们常说的山寨版应用,当然这种行为是不提倡的,在这里,我们学习这个知识点的目的只是为了让我们能够去思考,怎么去更好的防患于未然。

####二、准备工作

在开始之前,我们需要下载我们待使用的工具apktool.jar和apktool.bat,推荐从网上搜索最新版本进行下载 ,当然如果图个方便你也可以在我的百度云盘里下载,apktool ,提取码:8tgx,好了,接下来我们就开始进行我们的反编译操作。

####三、使用apktool获取apk资源文件和smali文件

首先将我们下载的apktool.jar文件和apktool.bat文件放在一起,例如我在D盘新建文件夹compile来存放二者,并将待编译apk文件拷贝过来,注意apktool.jar的命名(非apktool_2.3.4.jar)

这里写图片描述

随后cmd命令进入compile目录下,执行命令:apktool d test.apk

这里写图片描述

执行完毕,我们会发现compile目录下生成了一个与apk同名的文件夹,即apk反编译出来的资源文件和smali文件,smali文件是dex文件反编译的结果,但不同于dex2jar的反编译过程

这里写图片描述

####四、使用apktool对apk文件进行二次打包

在上述的反编译操作完成后,我们就能够发现smali文件夹内的.smali文件,其由smali语言编写,即Davlik的寄存器语言,smali有自己的语法并且可以修改,修改后可以被二次打包为apk,需要注意的是,apk经过二次打包后并不能直接安装,必须要经过签名后才能安装。

这里写图片描述

现在我们要将编译出来的test文件,重新打包成apk文件,刚才我就说了,smali是有自己的语法并且可以修改的,所以我们完全可以更改smali文件之后再进行打包,不过在这里我就仅仅简单的演示下打包操作了。

这里写图片描述

首先我们打开cmd命令,输入命令:apktool b test

这里写图片描述

执行命令完毕后,会在test文件夹中生成dist文件夹,该文件夹下就保存着我们二次打包后生成的apk文件,但是这个apk文件由于没有进行过签名,所以是不能够安装和运行的,签名的方法咱们接着往下看。

这里写图片描述

####五、使用Auto-sign对二次打包后的apk文件进行签名

首先我们需要下载Auto-sign工具,提取码:ycgt,之后解压到compile目录之下(只是为了查看方便)

这里写图片描述

随后将我们待签名的apk文件复制到Auto-sign目录之下,并更改名称为update.zip

这里写图片描述

至于为何要更改为update.zip文件,我们可以看下Sign.bat文件则一目了然

这里写图片描述

最后我们双击Sign.bat文件,将同目录下生成的update_signed.zip文件更改为test.apk文件即可,这个test.apk文件就是我们最终所需要的签名后的二次打包文件,在这个例子中,如果用户app没有做签名校验,那么重新打包后的apk与原始apk功能完全一样

这里写图片描述

####六、总结

通过上面的操作,我们能够发现,如果我们不进行签名校验,那么不法者仅仅只凭借apktool和Auto-sign工具就可以轻松破解我们的app并重新打包成新的apk,是不是想想就很恐怖;如果你觉得自己已经签名校验过了就可以高枕无忧了,那么我可以告诉你,孩子你太天真了,这个世界的那一面比深渊还黑,[/笑哭],我们下一节就来看看怎么绕过签名校验。

猜你喜欢

转载自blog.csdn.net/MingJieZuo/article/details/82661713