<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://www.pswp.cn/web/96041.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/96041.shtml
英文地址,請注明出處:http://en.pswp.cn/web/96041.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Qt】項目的創建 and 各個控件的使用

一、項目的創建🔍然后點擊新建項目。📖注意:路徑不要帶有中文,不然運行不了代碼。📖qmake是一個構建工具,在 Qt 寫的程序,設計的到一系列的 "元編程" 技術,什么是元編程技…

大模型架構演進全景:從Transformer到下一代智能系統的技術路徑(MoE、Mamba/SSM、混合架構)

當前大模型發展正經歷著一個關鍵的技術分水嶺。雖然Transformer架構自2017年問世以來主導了整個AI領域,但我們正見證著多種創新架構的涌現,每種都在試圖解決Transformer的固有局限。本指南將系統性地解析當前主流架構的技術原理、適用場景與發展趨勢&…

畫世界筆刷合集(2000 + 款):含宮崎駿森系、鴨風人像、國潮等多風格 + 視頻導入教程

預覽: https://blog.csdn.net/2501_93092597/article/details/151330089?spm1011.2415.3001.5331 想在畫世界創作卻缺適配筆刷?手動繪制森系元素、人像細節耗時久,導入筆刷總失敗,找配套背景 / 配色還得跨平臺搜索?這…

03-Redis 安裝指南:從版本選擇到多系統部署(Windows+macOS+Linux)

目錄引言一、安裝 Redis 前必須明確的核心問題二、Redis 版本選擇:穩定版 vs 開發版,該怎么選?2.1 版本規則:看 “次版本號” 辨穩定性2.2 穩定版與開發版核心差異2.3 版本選擇建議三、多系統安裝教程:step-by-step 實…

普通MYSQL數據庫是怎么做sum操作的

MySQL 的 SUM()操作實現是一個結合??執行引擎優化、存儲結構利用和分組算法??的高效過程。以下是其核心實現機制和優化策略:??1. 執行流程概覽??以查詢為例:SELECT department, SUM(salary) FROM employees GROUP BY department;??執行步驟??…

Claude-Flow AI協同開發:基礎入門之 AI編排

1.1 引言:超越“代碼生成器”的革命 在AI輔助開發的浪潮中,我們已經習慣了代碼補全、函數生成等“代碼生成器”工具。它們極大地提升了我們的編碼效率,但通常僅限于解決孤立、單一的問題。當面對一個完整的項目或一個復雜的功能模塊時&#x…

Linux中下載安裝部署Redis7.4.5——并設置用戶名、密碼及其授權的保姆級教程

一、環境準備 環境準備 序號 說明 1 使?RHEL9或Almalinux9.1及其更高版本系統 #查看系統信息 cat /etc/os-release 2 Linux中需要Redis源碼編譯所需的gcc依賴 #1-檢查是否已

健康度——設備健康續航條

在故障診斷與健康管理(PHM)領域和壽命預測領域中,健康度(Health Index, HI)是一個至關重要的概念,它旨在量化設備或系統的當前健康狀態,并為預測其剩余使用壽命(Remaining Useful Li…

【Python - 類庫 - BeautifulSoup】(02)使用“BeautifulSoup“按類名獲取內容

使用BeautifulSoup按類名獲取內容 在本文中,我們將介紹如何使用BeautifulSoup按類名獲取內容的方法。BeautifulSoup是一個用于解析HTML和XML文檔的Python庫。它可以方便地遍歷和搜索文檔樹,使得我們能夠輕松地提取想要的信息。 安裝BeautifulSoup 首先&a…

36.Java序列化與反序列化是什么

36.Java序列化與反序列化是什么 序列化就是把Java對象轉換成字節流(二進制)。 把對象保存到本地文件或網絡傳輸。因為Java對象在JVM的堆內存中,JVM堆不存在了,對象也就不在了。 反序列化就是把字節流轉換為對象 從文件或者網絡里獲…

c#泛型公共類示例

在C#中&#xff0c;泛型類是一種可以操作多種數據類型的類。這使得你可以編寫更靈活、可重用的代碼。泛型類通過在類名后使用尖括號<>和類型參數來定義。類型參數可以是具體的類型&#xff0c;如int或string&#xff0c;也可以是其他泛型類型&#xff0c;甚至是其他泛型類…

深入理解算法效率——時間和空間復雜度詳解

目錄 一、引言&#xff1a;為什么我們需要分析算法效率&#xff1f; 二、算法效率的維度 2.1 時間復雜度&#xff08;Time Complexity&#xff09; 2.2 空間復雜度&#xff08;Space Complexity&#xff09; 三、深入理解算法時間復雜度 3.1 時間復雜度的基礎概念 3.2 大…

排序---冒泡排序(Bubble Sort)

一、算法核心概念 冒泡排序是一種簡單的交換排序算法&#xff0c;其核心思想是&#xff1a;通過重復遍歷待排序數組&#xff0c;每次比較相鄰的兩個元素&#xff0c;若它們的順序錯誤&#xff08;如升序排序中前一個元素大于后一個&#xff09;&#xff0c;則交換它們的位置。經…

MCP(模型上下文協議)入門教程

MCP&#xff08;模型上下文協議&#xff09;入門教程&#xff1a;連接AI與外部世界的萬能插座 1 MCP是什么&#xff1f; 1.1 基本概念 MCP&#xff08;Model Context Protocol&#xff0c;模型上下文協議&#xff09;是一個開放協議&#xff0c;專門用于AI模型與外部數據源和…

GO開發遇到的報錯問題合集

本文將記錄平時在go開發中遇到的一些錯誤信息&#xff0c;踩過的坑&#xff0c;并分析原因及提供解決方法&#xff0c;持續更新中...1、grpc 接口請求報錯&#xff1a;Error: 13 INTERNAL: Response message parsing error: invalid wire type 7 at offset 316原因&#xff1a;…

Node.js 做 Web 后端優勢為什么這么大?

Node.js自誕生以來&#xff0c;一步步演變變為現代Web后端開發的基石之一。無論是初創公司快速構建原型&#xff0c;還是大型企業支撐高并發業務&#xff0c;好像它哪兒哪兒都在&#xff0c;甚至還有人覺得它威脅到了PHP的地位。 那為什么Node.js 做 Web 后端優勢那么大&#x…

JAVA:IO流之字節輸入流InputStream基礎

我們知道&#xff0c;文件是寫在磁盤中的&#xff0c;而程序的運行又要借助于內存。那么怎么實現內存和磁盤的“互動”呢&#xff1f;這就要借助“流”來實現了。內存具體指的就是我們的java程序&#xff0c;而磁盤具體指的是我們的文件。從磁盤到內存叫輸入&#xff0c;從內存…

23種設計模式——橋接模式 (Bridge Pattern)詳解

?作者簡介&#xff1a;大家好&#xff0c;我是 Meteors., 向往著更加簡潔高效的代碼寫法與編程方式&#xff0c;持續分享Java技術內容。 &#x1f34e;個人主頁&#xff1a;Meteors.的博客 &#x1f49e;當前專欄&#xff1a;設計模式 ?特色專欄&#xff1a;知識分享 &#x…

Python爬蟲實戰:研究Axes Grid模塊,構建旅游平臺酒店數據采集和分析系統

1. 引言 1.1 研究背景 隨著互聯網技術的飛速發展,全球數據總量呈現指數級增長。據國際數據公司(IDC)預測,到 2025 年全球數據圈將達到 175ZB,其中非結構化數據占比超過 80%。這些數據廣泛分布于各類網站平臺,包含著用戶行為、市場趨勢、產品特征等豐富信息。如何高效獲…

光照邊疆平臺|面向邊疆地區的現代化內容與信息服務系統

光照邊疆平臺&#xff5c;面向邊疆地區的現代化內容與信息服務系統聚焦“邊疆資訊 邊疆風光 用戶互動 后臺可視化管控”的高顏值內容平臺&#xff0c;適合展示、傳播與運營邊疆主題內容。系統定位與價值 主題聚焦&#xff1a;以“邊疆”為核心&#xff0c;統一內容語義與視覺…