关于Android二次打包,有的是为了更换证书,有的是为了修改资源,有的是为了注入广告,不管处于什么样的目的,都希望用于正当渠道。废话不多说,直接进入正题。
1.准备工作
我们需要下载ApkTool工具(关于该工具的下载和安装在官网都有详细的步骤,在这里就不多说了),然后确保keytool和jarsigner命令是可用的。
2.反编译
我们使用ApkTool进行反编译APK,执行如下命令:
1 | apktool d -o app app.apk |
就会将反编译结果放到app目录下,然后就可以修改反编译后的app目录中的内容,比如图片或代码。
如果需要修改代码,需要修改对应的Smali文件,关于Smali可以参见Android逆向开发之Smali
3.编译
接下来执行如下命令,将修改后的目录重新打包为APK
1 | apktool b -o app_fix.apk app |
转载https://wangchao.im/2016/01/20/android-secondary-build/
这样我们就生成了新的修改后的app_fix.apk
4.生成keystore
使用keytool命令生成keystore,具体如下:
1 | keytool -genkeypair -alias test -keyalg RSA -validity 20000 -keystore test.keystore |
然后会提示我们录入密钥口令,还有输入一些信息,根据提示填写即可,执行结束后就会生成一个别名为test
的test.keystore
5.签名
用我们刚才生成的test.keystore
给app_fix.apk
签名,执行如下:
1 2 3 4 | ## jarsigner jarsigner -verbose -keystore test.keystore -signedjar app_signed.apk app_fix.apk test ## apksigner apksigner sign --ks test.keystore --out app_signed.apk test.apk |
执行后需要录入keystore的口令,最后就会生成签名后的APKapp_signed.apk