APK资源修改与重签名打包

发表于2020-08-10
评论0 9.1k浏览

环境以及工具准备:

安卓模拟器,如腾讯手游助手,用于验证正常安装

assetBundleExtractor,可直接修改ab包数据并重新打包与压缩

Unity Studio,很方便清晰的查看ab内容

Java jdk,这里用的jdk13,我们要用到keytool、jarsigner

 

  1. 解压找到要操作的某个测试安卓包里的某资源文件(只适用未加密情况下,加密的要去内存解析才行,这里不介绍),取出待用
  2. 用UABE工具打开这个资源
  3. 查看资源内容,找到我们想改的某些地方,如修改某个脚本
  4. 查看是否修改成功,用unitystudio可清晰查看到
  5. 删除安卓包里的META-INF,这个是签名验证的,我们要改包里的内容需要删除这个,然后再重新签名,这样才能正常安装。将修改后的资源重新放入zip打开的安卓包对应目录里,此时只是修改资源完毕。这样的安卓包是安装不了的,接下来需要重新签名才行。签名分为生成keystore、正式签名两步。
  6. 生成keystore
  7. 正式签名
PVvvOomDSiwxfT2IMgbu.png
BUzzCaqlZ3pTmtbn1rMz.png
lL6pcfiGQWkxwCxBkGZ4.png

导出后修改想改的内容,如:

ngMcpPAFrh78egATkB4e.png

举个简单例子:修改一个进游戏默认积分就可达到2000,改完后重新导入,操作完毕后重新保存。保存出来的文件还可以用UABE压一次File/compress

wIBVuPTxLnkehlLboZ9m.png

这里用到的工具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即可,等待签名完毕。这种方式是把所有文件进行签名。正常完毕:

JAhjipr7jhZex0b115uY.png

生成新签名包如图:

WegYAvYrvTUrzyPdjlBc.png

遇到问题

以上操作完毕后,无法正常安装签名后的安卓包。搜索下网上资料,主要是jdk版本原因。这里不想尝试多版本jdk,尝试了给签名指令加了如下内容:

jarsigner -digestalg SHA1 -sigalg MD5withRSA -verbose -keystore android.keystore -signedjar update_signed.apk update.apk android.keystore

重新操作签名正常完毕后,安装并运行成功。

 

以上仅供尝试学习用,切勿用于不法之处。尝试了解下,可加强项目防包篡改的意识,及时给关键资源、脚本等做加密混淆等。

  • 允许他人重新传播作品,但他人重新传播时必须在所使用作品的正文开头的显著位置,注明用户的姓名、来源及其采用的知识共享协议,并与该作品在磨坊上的原发地址建立链接
  • 可对作品重新编排、修改、节选或者以作品为基础进行创作和发布
  • 不可将作品进行商业性使用
  • 需在以作品基础上创作的演绎作品上适用相同类型的知识共享许可条款

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引

标签: