<android>反编译魔改安卓系统应用并替换
我们知道安卓系统基于稳定性、维护便利、性能优化等原因并未对原生系统apk进行混淆加密处理,由此就方便了我们反编译替换原生应用。
首先我们设备需要是root后的,我是使用的是小米5,刷的24.3版本的面具。
首先我们需要取系统apk,这里以计算器应用为例:
adb pull /system/app/Calculator/Calculator.apk ./calculator.apk
保存到本地电脑后开始反编译流程:
1. 反编译:
apktool d calculator.apk -o calculator
2. 修改源文件:
这里可以自由发挥,修改资源文件或者简单的逻辑都可以。
3. 重新打包:
apktool b GwmSystemUI -o UI_NEW.apk
4. 对齐APK
zipalign -v 4 unsigned_app.apk aligned_app.apk
5. 命令签名(助手只能签名v1,apksigner命令要求JDK是1.8,sdk是30以上)
# 仅使用V1签名
apksigner sign --v1-signing-enabled true --v2-signing-enabled false --v3-signing-enabled false --ks my_keystore.jks --out signed_app.apk unsigned_app.apk
# 仅使用V2签名
apksigner sign --v1-signing-enabled false --v2-signing-enabled true --v3-signing-enabled false --ks bianyi.jks --out sign_V2.apk app-release_pack_align.apk
# 仅使用V3签名
apksigner sign --v1-signing-enabled false --v2-signing-enabled false --v3-signing-enabled true --ks my_keystore.jks --out signed_app.apk unsigned_app.apk
执行后检查签名:
apksigner verify --verbose sign_V2.apk
查看签名:
apksigner verify --print-certs extracted_app.apk
此时我们重新打好的包就已经ok了。
下面需要推包替换原生的calculator.apk:
# 重新挂载/system为可写
adb shell "su -c 'mount -o rw,remount /system'"
# 备份原文件
adb shell "su -c 'cp /system/priv-app/Calculator/calculator.apk /system/priv-app/Calculator/calculator.apk.bak'"
# 推送修改后的文件
adb push SystemUI_signed.apk /system/priv-app/Calculator/calculator.apk
# 设置正确权限
adb shell "su -c 'chmod 644 /system/priv-app/Calculator/calculator.apk'"
#重启机器
adb reboot
重启之后,我们会发现计算器应用已经成了我们修改之后的应用了。
附:系统应用apk对应的功能
SystemUI.apk包含的组件
SystemUI.apk 包含多个系统界面组件:
状态栏 (StatusBar)
通知栏 (NotificationPanel)
快速设置面板 (QuickSettings)
导航栏 (NavigationBar)
锁屏界面 (Keyguard)
最近任务 (Recents)