Android APK 加固重新签名

2022-07-29 09:38:17 浏览数 (2)

APK 加固流程

打包APK

通过 ./gradlew assembleRelease 命令打包,此时的apk没有加固,不符合安全需要

登录腾讯云执行加固操作

加固使用 腾讯云 -> 移动应用安全 -> 应用安全 加固方案,加固服务需要认证,自行选择适合自己的方式就行了

认证成功后,进入 应用加固 页面

点击去加固,点击 立即加固 ,上传应用成功后如下

点击 确认加固, 在线加固需要几分钟,加固完成后有加固结果显示

查看加固结果

此时加固就完成了,下载加固包就行了

重新签名

由于腾讯云应用安全需要将APK签名信息删除后才能加固,所以加固后的安装包是没有签名信息的,现在需要对加固包重新签名

使用 JDK 中的签名工具 jarsigner

运行 jarsigner,如果没有设置PATH环境变量,那可以从JDK安装路径下的bin目录中找到

代码语言:javascript复制
$ jarsigner -help
用法: jarsigner [选项] jar-file 别名
       jarsigner -verify [选项] jar-file [别名...]

[-keystore <url>]           密钥库位置

[-storepass <口令>]         用于密钥库完整性的口令

[-storetype <类型>]         密钥库类型

[-keypass <口令>]           私有密钥的口令 (如果不同)

[-certchain <文件>]         替代证书链文件的名称

[-sigfile <文件>]           .SF/.DSA 文件的名称

[-signedjar <文件>]         已签名的 JAR 文件的名称

[-digestalg <算法>]        摘要算法的名称

...

签名命令

代码语言:javascript复制
jarsigner -verbose -keystore keystore文件路径 -signedjar 签名后生成的apk路径 待签名的apk路径 alias别名

个人本地apk添加签名,签名文件 keystore 和 apk 都在同一个目录下, 签名后的 apk1.apk 也在本地

代码语言:javascript复制
$ jarsigner -verbose -keystore .my-release-key.keystore -signedjar .myapp1.apk .myapp.apk my-key-alias
输入密钥库的密码短语:
   正在添加: META-INF/MANIFEST.MF
   正在添加: META-INF/MY-KEY-A.SF
   正在添加: META-INF/MY-KEY-A.RSA
  正在签名: lib/arm64-v8a/libbetter.so
  正在签名: lib/arm64-v8a/libc  _shared.so
  
  ...
  
    正在签名: assets/0OO00l111l1l
  正在签名: tencent_stub
    [可信证书]

jar 已签名。

警告:
签名者证书为自签名证书。

这样就签名成功了。

0 人点赞