APK资源修改与重签名打包
环境以及工具准备:
安卓模拟器,如腾讯手游助手,用于验证正常安装
assetBundleExtractor,可直接修改ab包数据并重新打包与压缩
Unity Studio,很方便清晰的查看ab内容
Java jdk,这里用的jdk13,我们要用到keytool、jarsigner
- 解压找到要操作的某个测试安卓包里的某资源文件(只适用未加密情况下,加密的要去内存解析才行,这里不介绍),取出待用
- 用UABE工具打开这个资源
- 查看资源内容,找到我们想改的某些地方,如修改某个脚本
- 查看是否修改成功,用unitystudio可清晰查看到
- 删除安卓包里的META-INF,这个是签名验证的,我们要改包里的内容需要删除这个,然后再重新签名,这样才能正常安装。将修改后的资源重新放入zip打开的安卓包对应目录里,此时只是修改资源完毕。这样的安卓包是安装不了的,接下来需要重新签名才行。签名分为生成keystore、正式签名两步。
- 生成keystore
- 正式签名
导出后修改想改的内容,如:
举个简单例子:修改一个进游戏默认积分就可达到2000,改完后重新导入,操作完毕后重新保存。保存出来的文件还可以用UABE压一次File/compress
这里用到的工具keytool,配置好java环境就可以直接用
keytool -genkey -alias android.keystore -keyalg RSA -validity 36500 -keystore android.keystore
签名用到工具jarsigner,把上面android.keystore放到安卓包同目录下,进入该目录。
jarsigner -verbose -keystore android.keystore -signedjar update_signed.apk update.apk android.keystore
输入密码key即可,等待签名完毕。这种方式是把所有文件进行签名。正常完毕:
生成新签名包如图:
遇到问题:
以上操作完毕后,无法正常安装签名后的安卓包。搜索下网上资料,主要是jdk版本原因。这里不想尝试多版本jdk,尝试了给签名指令加了如下内容:
jarsigner -digestalg SHA1 -sigalg MD5withRSA -verbose -keystore android.keystore -signedjar update_signed.apk update.apk android.keystore
重新操作签名正常完毕后,安装并运行成功。
以上仅供尝试学习用,切勿用于不法之处。尝试了解下,可加强项目防包篡改的意识,及时给关键资源、脚本等做加密混淆等。