Unity 安卓 apk 反编译 重新打包 签名修改
拿到一个Unity 打包出来的apk,如果没有加密的话 ,你是可以通过反编译修改其中的属性的。
步骤一 apk 解压
方法1: apk 变成 .zip 并解压
然后修改 \assets\bin\Data\Managed\Assembly-CSharp-firstpass.dll
方法2: 下载 apktool 软件对 (推荐)
下载地址:
我是windows 平台:下载位置如下
1 下载wrapper script 如果提示安全问题,浏览器设置中关闭安全选项
都关闭掉
右键,保存为apktool.bat ,之后再下载 apktool.jar 下载后修改名字
2 最后下载 apktool.bat 和 apktool.jar 把他们放到 C盘的 Windows 下
如图
(3)使用 win +R 或者 点击 开始 找到运行 使用命令行解压
输入"F: " 将当前目录切换到apk 软件所在目录 , 我apk 软件 当前放在F盘
4 解压当前apk
输入 apktool d 我的apk名字.apk 我的apk 名字是:“PlayIt2.apk” 所以输入: apktool d PlayIt2.apk
就会出现一个解压后的文件,解压成功
也是一样 去修改 \assets\bin\Data\Managed\Assembly-CSharp-firstpass.dll
步骤2 使用Dnspy 修改Assembly-CSharp-firstpass.dll中想要修改的脚本
然后可以通过下载 类似 dnSpy 软件进行代码反编译
下载地址:
打开dnspy.exe
软件界面和vs非常相似,点击文件-->>>打开--- >>>选择打开需要修改的dll 文件
步骤3 对修改后的APK 进行打包和
1 解释:
软件,再用压缩成rar的,然后把后缀改为.apk 是不能使用的,必须要进行重新打包,且设置签名 。
签名:它就是对我们的apk加了一个校验参数,防止apk被掉包。一开始做Android开发,就接触到了apk签名;后来在微信开放平台、高德地图等平台注册时,需要填写apk签名的md5值和sha256值;再后来做系统应用,接触到了系统签名;而后就想了解下apk的生成机制,学习了如何用命令行进行签名。
2 使用 apktool 将修改保存之后test文件夹重新打包生成新的未签名的apk
输入:apktool b <文件夹名称> -o <新的apk全称> 如: F:\>apktool b PlayIt2 -o PlayIt3.apk 我将PlayIt2修改后的文件夹打包为:PlayIt3.apk
之后就会生成 playIt3.apk 但此时再手机安装时并不能安装成功,因为还没有设置签名
步骤4 重新设置APK签名
1 利用Android Studio生成签名与对apk进行签名(没有需要下载)
1.生成签名
首先要创建一个签名文件,用Android Studio随便建一个项目工程,然后在菜单栏中选择Build -> Generate Signed Bundle/APK。 我的是这个
选择APK,点击Next,如下图:
选择Create New
填入签名相关信息,如下图:
2 使用 jarsigner 工具 绑定签名和包
首先最好把 待签名的Apk文件和 用来签名的keystore 文件放在同一个目录,然后在目录下开启命令行。
输入指令(简陋版)
jarsigner -keystore myKey.key -signedjar apk-signed.apk apk-unsigned.apk myKey
1
myKey.key 则是用来签名的keystore文件
apk-signed.apk 则是签名完成的apk文件名
apk-unsigned.apk 则是待签名的apk文件名
myKey 则是keystore文件的别称 key alias
这四项都是要针对自己的情况填写。
正常来说,配置好了环境,输入指令后,就会在apk-unsigned.apk的同级目录下找到 签名好的Apk文件了
如果想要更高级的重签名方式 ,可以参考 Apk去掉签名以及重新签名的方法
2 使用可视化签名工具绑定签名和包(推荐)
我这里使用的是360的重签名工具。安装打开后,把对应的属性填上去,点击一键签名后,签名后的apk就会生成了,建议使用这种方式,特别是环境配置突然出问题然后急着对Apk重签名的时候,这个工具特别的香。
如下生成了 PlayIt3_signed_Aligned .apk 完成签名后,可以正常安装使用