【Android 逆向】apk反编译后重打包
1. 执行 apktool b smali_dir
smali_dir 为反编译出来的数据目录
执行后可能会报错
I: Building resources...
W: /root/Desktop/tmp/qimao_dir/qimao_v5.4/AndroidManifest.xml:1: error: No resource identifier found for attribute 'compileSdkVersion' in package 'android'
W:
W: /root/Desktop/tmp/qimao_dir/qimao_v5.4/AndroidManifest.xml:1: error: No resource identifier found for attribute 'compileSdkVersionCodename' in package 'android'
W:
W: /root/Desktop/tmp/qimao_dir/qimao_v5.4/AndroidManifest.xml:37: error: No resource identifier found for attribute 'appComponentFactory' in package 'android'
W:
brut.androlib.AndrolibException: brut.common.BrutException: could not exec (exit code =
1): [/tmp/brut_util_Jar_75145076448849533262091191559183387531.tmp, p, --forced-package-
id, 127, --min-sdk-version, 19, --target-sdk-version, 26, --version-code, 50400, --
version-name, 5.4, --no-version-vectors, -F, /tmp/APKTOOL5890277078150715820.tmp, -e,
/tmp/APKTOOL1664296946725275904.tmp, -0, arsc, -I,
/root/.local/share/apktool/framework/1.apk, -S,
/root/Desktop/tmp/qimao_dir/qimao_v5.4/res, -M,
/root/Desktop/tmp/qimao_dir/qimao_v5.4/AndroidManifest.xml]
虽然看起来像是Warning,但这就是重打包失败的原因
当前我用的apktool版本为2.7.0
解决办法:删除掉AndroidManifest.xml中那些报错的属性(这些属性好像是apktool反编译时自动加进去的,非原始代码)
删除后打包成功
2. 创建签名文件(创建了可以复用)
# 创建一个别名叫coolapk 的coolapk.keystore
keytool -genkey -keystore coolapk.keystore -keyalg RSA -validity 10000 -alias coolapk
本地会生成一个文件coolapk.keystore
3. 对重打包后的apk进行签名
#jarsigner 随jdk安装
#coolapk 是第二部创建的alias的值,这个必须保持一致
jarsigner -verbose -keystore coolapk.keystore -signedjar xxx_v5.4_signed.apk xxx_v5.4.apk coolapk
4. 签名成功后安装到手机,成功运行
本文作者:明月照江江
本文链接:https://www.cnblogs.com/gradyblog/p/17266391.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步