uniapp 打包加固后v2签名并且证书指纹校验(修复证书签名后换个证书重签还能使用app漏洞)方案

本文详细介绍了如何使用Android Studio的apksigner对Uniapp打包的APK进行签名,并附带了签名证书校验和常见问题。作者还分享了签名证书替换策略及其验证方法,包括获取和检查SHA-1值。

最近有在弄uniapp打包apk加固包实现签名并校验,这边记录一下,顺便说下注意事项
v2签名使用的是android studio的apksigner,一般下载android studio 并安装完SDK后默认路径在C:\Users\用户名\AppData\Local\Android\Sdk\build-tools\33.0.0\lib
在对apk加签前,需要执行以下命令对apk对齐下
进入到C:\Users\用户名\AppData\Local\Android\Sdk\build-tools\33.0.0\lib目录下打开cmd

zipalign -c -v 4 [input.name].apk
zipalign -v 4 [input.name].apk [ouinput.name].apk

执行完命令后需要检查对齐后的app有没有后缀没有的话加一下,不然加签的时候会报错
然后把对齐后的apk以及证书文件搬到apksigner目录执行加签命令

java -jar apksigner.jar sign --ks 打包证书文件.keystore --ks-key-alias 证书别名 --ks-pass pass:证书密码 --key-pass pass:密码 --out 加签后apk的名字 加签前apk的名字 

这边详细说一下这个签名重签还能使用的漏洞:
假设我使用A证书给当前app签名, 然后换了一个B证书去签名还能使用当前app
解决思路是:
获取自己签名证书的sha值而后去做校验, 不匹配时退出应用

代码演示:
  onLaunch: function(inf) {
      console.log('App Launch');
		// #ifdef APP-PLUS
		      // 签名证书指纹检验
		      var sha1 = 'baad093a82829fb432a7b28cb4ccf0e9f37dae58';  //修改为自己应用签名证书SHA-1值,是全小写并且中间不包含“:”符号
		      if(sha1!=plus.navigator.getSignature()){
		        //证书不对时退出应用
		        plus.runtime.quit();
		      }
		// #endif
  }```
  
  

获取证书sha-1值可执行以下命令

keytool -list -keystore 签名证书文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值