故旧不遗则民不偷

发布于
安卓 apk 解包和重新打包签名

恭而无礼则劳,慎而无礼则葸,勇而无礼则乱,直而无礼则绞。 君子笃于亲,则民兴于仁; 故旧不遗,则民不偷。

APK 解包

首先下载 apktool: https://apktool.org/docs/install

在 windows 上下载一个 bat 脚本,重命名下载的 jar 为 apktool.jar ,然后将 apktool.jarapktool.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