混淆,加固,重签名,对齐操作
测试点评
- APK Protect是一款Android APK加密服务,PC Edition免费,其他高级版收费。
- 服务支持Android 2.1-4.2。
- 对于APK而言,使用PC Edition加密后其体积增加30-50KB,影响较小。
- 企业版同时提供Java和C++代码的加密。
- 提供加密操作流程和视频教程(英文)。
- 更新比较及时,目前最高支持Android 4.2。
加固流程
(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未签名,所以我们需要使用签名工具对其进行签名。
步骤:首先我们需要有.keystore 或.jks文件,那怎么生成呢?
.keystore 或.jks文件的生成(可跳过):
.jks文件的生成如下:
可通过AS中build中的下边这个↓,调出上边↑这个图像化界面生成.jks文件即可;
.keystore的生成
.keystore的生成麻烦一点儿,需要键入cmd命令进入命令模式。因为需要通过keytool.exe 工具来创建keystore库.所以我们需要到"JDK"的安装目录的Bin子目录下,按住shift + 鼠标右键选择“在此处打开命令窗口”进入本地命令模式。
输入以下命令:
例子:keytool -genkeypair -alias mydemo.keystore -keyalg RSA -validity 100 -keystore mydemo.keystore
命令说明如下:
-genkeypair :指定生成数字证实
-alias :指定生成数字证书的别名
-keyalg:指定生成数字证书的算法 这里如RSA算法
-validity:指定生成数字证书的有效期
-keystore :指定生成数字证书的存储路径。 (这里默认在keytool.exe 目录下)
然后回车 出现如图交互式界面 输入数字证书费密码 作者 公司等详细信息
如图 :
完成后,keystore库创建完成,你可以在指定的保存目录下找到它 如:
key文件生成完了,那么我们就利用xx.keystore或xx.jks,来生成签名的apk吧!
签名就需要使用“ JDK ”安装目录下bin子目录下的jarsigner.exe工具来进行签名啦。
使用如下命令进行签名:
jarsigner -verbose -keystore mydemo.keystore -signedjar -Note.apk Notes.apk mydemo.keystore
以上命令的说明:
-verbose:指定生成详细输出
-keystore:指定数字证书存储路径
-signedjar:该选项的三个参数分别为 签名后的apk包 未签名的apk包 数字证书别名
注意有效期哦。
这个警告的话本身对签名没有影响,要想去掉这个警告只要在命令上再加上:
-tsa https://timestamp.geotrust.com/tsa 就可以了,不过考虑到在安装的时候就可能会提示安装失败,没有签名,所以再加这段话: -digestalg SHA1 -sigalg MD5withRSA ,结果新的命令语句就是:
例:jarsigner -verbose -digestalg SHA1 -sigalg MD5withRSA -keystore test.keystore -storepass test123 -signedjar signed_client.apk client.apk test