编辑 最后修改时间 2023/02/01 10:24
Android APK安装包反编译及重新编译
环境准备
Apktool
https://ibotpeaches.github.io/Apktool/install/
https://github.com/iBotPeaches/Apktool
apktool --version
2.7.0
keytool
一般在 java/bin 目录,例如:C:\Program Files\Java\jre1.8.0_361\bin
java 下载安装 https://www.java.com/en/download/
keytool -version
keytool 18
jarsigner
jarsigner 是 openjdk 提供的工具
下载地址:https://download.java.net/openjdk/jdk18/ri/openjdk-18+36_windows-x64_bin.zip
参考资料https://www.thegeekdiary.com/jarsigner-command-not-found/
jarsigner -version
jarsigner 18
反编译
apktool d ./Earth2037-v132.apk -o ./v132
重新编译
# 打包
apktool b ./v132 -o ./v132.apk
# 生成签名证书
keytool -genkey -alias abc.keystore -keyalg RSA -validity 20000 -keystore abc.keystore
#签名
jarsigner -verbose -keystore abc.keystore -signedjar v132_signed.apk v132.apk abc.keystore
疑难问题
重新打包的APK安装失败:Failed to extract native libraries, res=-2
在工程中如果用了so库,在有的机器上安装apk可能会报这个错误,apk安装不上,报一句:Failure [INSTALL_FAILED_INVALID_APK: Failed to extract native libraries, res=-2]
出现这个问题的原因是在AndroidManifest.xml中的application标签中加了一句:android:extractNativeLibs="false"
.
这句的意思是编译apk的时候不压缩so库。去掉这句就OK了,但是这个会导致apk的体积非常大。
相关资源
安卓逆向工具使用之J2S2J_一款java代码和smali代码相互转换的工具
J2S2J
提取密码: wkim ,下载地址: https://www.52pojie.cn/thread-656320-1-1.html
安卓逆向菜鸟的初体验