安卓逆向手动解包-打包流程
起因
由于大多教程教学修改apk包都是用androidkiller,但是本人尝试发现,一部分安装包会出现解包错误,或者打包后无法安装的情况,因此,摸索了许久,学会了手动拆包和打包
准备工具
下载地址
apktool:https://apktool.org/
android-sdk(其中的zipalign,apksigner):https://developer.android.google.cn/tools/releases/platform-tools?hl=zh-cn
java-sdk(其中keytool):https://www.oracle.com/cn/java/technologies/downloads/
解包命令
apktool d input.apk -o outputdir
其中input.apk
是你要解包的apk,outputdir
是解包后保存的文件夹
解包后就可以对apk进行愉快的修改了
打包
打包压缩
apktool b inputdir -o output.apk
其中inputdir
是你要解包路径(刚刚解包的apk路径),output.apk
是打包后apk路径
值得注意的是:如果不填-o output.apk
的参数默认打包在inputdir
中的dest
文件夹中
对齐
重点:在android10+后apk要进行对齐,否则会安装失败这是为什么你apk安装不上
zipalign.exe -v -p 4 input.apk output.apk
其中4
是对齐的字节(以4字节对齐)
可以通过这条命令来可以检测apk是否对齐
zipalign.exe -v -c input.apk
签名
apksigner.bat sign --ks input.jks --v1-signing-enabled true --v2-signing-enabled true --out output.apk input.apk
--v1-signing-enabled true --v2-signing-enabled true
启用v1/v2签名--ks input.jks
签名文件
那么问题来了input.jks在哪里可以获得呢?
其实也非常的简单
keytool -genkeypair -keyalg RSA -keypass 123456 -storepass 123456 -keysize 2048 -validity 3650 -keystore output.jks
其中-keyalg RSA
加密方式RSA-keypass 123456
密钥的访问密码(保护私钥)-storepass 123456
密钥库的访问密码(保护整个 .jks 文件)-keysize 2048
密钥长度(2048 位,安全性较高)-validity 3650
证书有效天数(10 年)-keystore output.jks
生成的密钥库文件名