安卓 apk 解包和重新打包签名
恭而无礼则劳,慎而无礼则葸,勇而无礼则乱,直而无礼则绞。 君子笃于亲,则民兴于仁; 故旧不遗,则民不偷。
APK 解包
首先下载 apktool: https://apktool.org/docs/install
在 windows 上下载一个 bat 脚本,重命名下载的 jar 为 apktool.jar
,然后将 apktool.jar
和 apktool.bat
放到一个文件夹,然后添加环境变量。
运行命令即可解包安装的 apk
apktool d xxx.apk
参考:https://gist.github.com/ryanamaral/fb5dddf5c4fad39543b7133c8f8e88da
处理报错
如果遇到报错
Exception in thread "main" com.android.tools.smali.dexlib2.dexbacked.DexBackedDexFile$NotADexFile: Not a valid dex magic value: cf 77 4c c7 9b 21 01 cd
应该是 dex 加密过了,可以通过加参数跳过
apktool d xxx.apk -f --only-main-classes
如果是是网页套壳的应用,可以在解包后的文件里,找到网页的 dist 资源,然后修改一些功能。改好之后打包:
apktool b xxx
自签名
如果安装过 Android Studio 会自带签名的工具,首先生成自签名证书:
keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000
这里输入一个 6位密码
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore my_application.apk alias_name
然后就打包好了
参考:https://stackoverflow.com/questions/10930331/how-to-sign-an-already-compiled-apk
签名的文档:https://developer.android.com/studio/publish/app-signing?hl=zh-cn#setup