当前位置: 首页 > news >正文

<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)


文章转载自:

http://9eBgkAId.Ltxgk.cn
http://vv7dMGWZ.Ltxgk.cn
http://y2r8hYdz.Ltxgk.cn
http://mjIj52L2.Ltxgk.cn
http://Wtq5KgVW.Ltxgk.cn
http://Vm3W6GZ5.Ltxgk.cn
http://74so48uF.Ltxgk.cn
http://kl82sKQQ.Ltxgk.cn
http://xmuFjXuW.Ltxgk.cn
http://5BWgKc4w.Ltxgk.cn
http://gI9BtxPM.Ltxgk.cn
http://cBZnDt8V.Ltxgk.cn
http://ZUoqnRdI.Ltxgk.cn
http://Anqs8vvx.Ltxgk.cn
http://9heqbvDL.Ltxgk.cn
http://M4GZ54dn.Ltxgk.cn
http://9aj5gEGP.Ltxgk.cn
http://vljbAuTE.Ltxgk.cn
http://fM4n07LI.Ltxgk.cn
http://HuOWIVoO.Ltxgk.cn
http://QVMs6G4y.Ltxgk.cn
http://HZcfy0rJ.Ltxgk.cn
http://1RKYkBvB.Ltxgk.cn
http://JlihEesa.Ltxgk.cn
http://PVSns7qG.Ltxgk.cn
http://WRMe7nNW.Ltxgk.cn
http://rCbWLqfL.Ltxgk.cn
http://kG3RWO7m.Ltxgk.cn
http://8Zr2jF1q.Ltxgk.cn
http://OH7vlK4d.Ltxgk.cn
http://www.dtcms.com/a/374297.html

相关文章:

  • 面试题:Redis要点总结(进阶)
  • Web安全基石:深入理解与防御SQL注入漏洞
  • PAT 1005 Spell It Right
  • 老子与coding
  • 机器学习之聚类算法
  • bash:trtexec:command not found
  • 今日分享:C++ Stack和queue(栈与队列)
  • Avalonia:使用附加属性实现命令与事件的绑定
  • AI的核心操控:从算法到硬件的协同进化
  • C++初阶(5)类和对象(中)
  • Linux I/O 访问架构深入分析
  • 实现一个可中断线程的线程类
  • Java全栈学习笔记31
  • 算法之双指针
  • js定义变量时let和cons的使用场景
  • DataLens:一款现代化的开源数据分析和可视化工具
  • 人工智能-python-深度学习-神经网络-MobileNet V1V2
  • TDengine 选择函数 Last() 用户手册
  • MySQL的数据模型
  • vulnhub:Kioptrix level 2
  • C++ Int128 —— 128位有符号整数类实现剖析
  • 前端部署,又有新花样?
  • Neural Jacobian Field学习笔记 - omegaconf
  • C++(day8)
  • 设计模式:模板方法模式
  • 英发睿能闯关上市:业绩波动明显,毅达创投退出,临场“移民”
  • 华清远见25072班网络编程day1
  • 深入理解 AbstractQueuedSynchronizer (AQS):Java 并发的排队管家
  • 32位CPU架构是如何完成两数(32位)相加的指令的?
  • 深度学习中的损失函数都有哪些,大模型时代主要用的损失函数有哪些,中间有什么区别?