您的位置:首页 > 移动开发 > Android开发

Android APK加固(加壳)工具

2016-12-06 11:04 295 查看
之前一篇文章Android proguard代码混淆,我们讲解了如何实现APK的代码混淆,让反编译者不那么容易阅读我们的源代码。虽然我们混淆,做到native层,但是这都是治标不治本的。反编译的技术在更新,那么保护Apk的技术就不能停止。现在有很多Apk加固的第三方平台,譬如爱加密,360加固,梆梆加密等,但是这些平台都是收费的。今天我们给大家介绍一个免费的APK加固工具APK Protect。

测试点评

APK Protect是一款Android APK加密服务,PC Edition免费,其他高级版收费。

服务支持Android 2.1-4.2。

对于APK而言,使用PC Edition加密后其体积增加30-50KB,影响较小。

企业版同时提供Java和C++代码的加密。

提供加密操作流程和视频教程(英文)。

更新比较及时,目前最高支持Android 4.2。

开发建议

APK Protect的免费版(PC Edition)只能保护Java代码,可以满足开发者的部分需求。

APK Protect的高级版本均需付费,且已经停止提供免费试用,加密C++代码需要使用最高级的企业版。

服务不提供中文支持,对开发者的英语水平有一定要求。

集成过程

加固流程

(1)选择版本:有多个版本,此处选用免费版(APK Protect PC Edition)。



我把软件也上传到CSDN服务器,下载地址

下载后解压目录如下:



(2)目标应用:SplashAct.apk

(3)加密过程:

无需安装,解压后直接运行apkcrypt.exe;

选择需要加密的APK;

指定生成目标的名字;

点击按钮开始加密,软件会在同一目录下生成加密后的APK。



加密前:18823KB

加密后:18885KB



注:点击开始后,可能会弹出错误信息:The application need Java jre , please install jre and retry

解决办法:由于电脑是64位的,我只安装了64位的jre,再去装个32位的jre就可以了

重新签名

获取到加固之后的APK文件,这时还不能立即安装,会提示APK未签名,所以我们需要使用签名工具对其进行签名。

步骤:将刚才生成的加固后的APK文件和keystore放在同一目录下,使用命令行进行签名。

jarsigner -verbose -keystore eastday_sign.keystore -signedjar SplashAct_signed.apk SplashAct.apk eastday

说明:

-verbose 输出签名的详细信息

-keystore eastday_sign.keystore 使用key的绝对路径

-signedjar SplashAct_signed.apk SplashAct.apk eastday 正式签名,三个参数中依次为签名后产生的文件SplashAct_signed.apk ,要签名的文件SplashAct.apk和密钥库(也就是alias)eastday



签名成功,在相同目录下会生成签名后的APK文件。



zipalign(压缩对齐)优化

签名之后的APK文件现在已经可以安装到手机上了,不过在此之前Android还极度建议我们对签名后的APK文件进行一次对齐操作,因为这样可以使得我们的程序在Android系统中运行得更快。对齐操作使用的是zipalign工具,该工具存放于<\Android SDK>/build-tools/目录下,将这个目录配置到系统环境变量当中就可以在任何位置执行此命令了。命令格式如下:

zipalign -v 4 SplashAct_signed.apk SplashAct_aligned.apk

压缩对齐成功,在相同目录下会生成对齐后的APK文件。



反编译

关于反编译APK不熟悉的同学请看我的这篇文章Android APK的反编译和重新打包

我们将刚刚加固之后的APK文件(SplashAct_signed.apk或SplashAct_aligned.apk)进行反编译,会报错:



注:关于APK加固的原理有兴趣的同学可以看看这篇文章,Android中的Apk的加固(加壳)原理解析和实现

用gui工具看反编译后代码也是看不了的,说明APK已经被成功加固了。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: