互联网科技Android知识首页投稿(暂停使用,暂停投稿)

Android应用apk文件二次打包步骤

2016-08-13  本文已影响8577人  自己找知己

最近根据别人的博客看了下如何对应用进行二次打包。之前没有真正实践过,今天就来自己动手实现一下。声明,本篇博客内容也是根据别人的博客进行学习,然后我自己总结写出的,目的就是好记性不如烂指头,还是敲一遍记得深,我的学习链接:http://www.jianshu.com/p/7e5ad780f8ab/comments/3607759#comment-3607759 在此也向作者表示感谢.

一、二次打包的概念

所谓的二次打包的概念,即对已经编译发布的apk文件,即已经使用签名文件进行正式签名的应用文件进行自己的修改之后,再次签名打包发布的过程称为二次打包。

二、二次打包能干什么

我们知道,最终我们发布到应用市场供用户下载的是一个.apk形式的文件,apk文件其实就是一种特殊的文件格式,其实就是资源文件,布局文件,主配置文件,dex文件以及签名验证文件等的文件集合。我们把.apk文件的后缀名修改为.zip包,然后进行解压缩进行查看,就能看到上面说的一些文件目录及文件的罗列,在此不在贴图。具体说到二次打包能干什么,其实就是我们可以对原来的apk文件中的源码进行修改,然后重新编译,进行二次打包,重新发布测试,从而达到我们修改别人的apk文件的目的。

三、二次打包需要的准备
apktool d demo.apk
keytool -genkey -alias androidauto.keystore -keyalg RSA -validity 20000 -keystore android.keystore
jarsigner -keystore demo.keystore -storepass password -signedjar demo.apk demo_signed.apk demo.keystore

如上命令就是使用demo.keystore签名文件对apk文件进行签名。另外,在执行如上签名命令时,有的jdk如果是1.7版本时,可能会签名失败,提示警告,信息如下:

No -tsa or -tsacert is provided and this jar is not timestamped. Without a timestamp, users may not be able to validate this jar after the signer certificate's expiration date (2019-08-16) or after any future revocation date.

此时,需要修改如上的签名命令,修改后如下:

jarsigner -digestalg SHA1 -sigalg MD5withRSA -keystore demo.keystore -storepass password -signedjar demo.apk demo_signed.apk demo.keystore
//先卸载 package为应用包名
adb uninstall package 
//然后进行重新安装
adb install package

不出意外,安装就能成功。如果要验证的话,自己可以到应用市场下载官方的apk文件,然后试图安装替换,会提示失败,因为签名不一致。

准备工作就是这么多,接下来就是具体的二次打包的步骤

四、如何进行二次打包

首先说一下本次实践的终极目标,修改某个应用中一个界面的点击事件,使其不能产生页面跳转事件,如下图:


某应用的设置界面

我们的目的就是让右上角的意见反馈按钮事件失效,无法完成跳转,以完成我们修改的目的。依旧,Talk is cheap, show me the code.下面将二次打包的主要步骤分步骤叙述如下,为了方便说明,以某个应用为例进行说明:

五、二次打包的意义

整个反编译,分析,修改,重新打包签名这一整个过程下来,可以发现,其实中间涉及的流程和内容挺多的,同时还涉及到很多平时不容易涉及的原理知识点等内容。所以,掌握二次打包这整个过程,有助于我们更好的理解整个Android项目的内在结构,编译过程,发布流程甚至安全防护等方面的知识。

六、延伸及拓展

通过上面的反编译过程我们看到,通过反编译工具,我们可以拿到别人项目的混淆后的代码。虽然混淆代码是将变量及类名做了处理,但是其实还是不够安全,如果被别人盯上,分析出业务逻辑理论上只是时间问题。所以在安全防护这方面,敌追我赶,又出现了应用加固这种说法,增加别人破解的难度,不让别人反编译,提高门槛。当然,有矛自然有盾,对应的肯定就是脱壳技术,可以将加固的文件进行脱壳,然后反编译。打算下一目标学习学习脱壳,看能否研究个皮毛。

上一篇 下一篇

猜你喜欢

热点阅读