Magisk—系統(tǒng)級“魔法面具”
Magisk(Magic Mask)是由開發(fā)者 topjohnwu 開發(fā)的開源 Android 框架,自 2016 年發(fā)布以來已成為最受歡迎的 Android 系統(tǒng)修改工具之一。其核心創(chuàng)新在于通過「系統(tǒng)掛載(Systemless)」技術(shù)實(shí)現(xiàn)無需修改系統(tǒng)分區(qū)的 Root 權(quán)限獲取和模塊化功能擴(kuò)展。
核心功能與優(yōu)勢
1. Systemless Root
通過虛擬掛載覆蓋系統(tǒng)分區(qū),實(shí)現(xiàn) Root 權(quán)限獲取而不修改 /system 分區(qū),避免觸發(fā) OTA 更新失敗或安全機(jī)制(如 Google SafetyNet)檢測。
2. Magisk 模塊倉庫
○ 系統(tǒng)級功能增強(qiáng)與定制
如界面美化(自定義狀態(tài)欄、字體替換)、性能優(yōu)化(如通過「BlackHog」模塊智能管理內(nèi)存占用)。
○ 隱私與安全防護(hù)
如廣告過濾(安裝「AdAway」模塊實(shí)現(xiàn)全局廣告攔截)、權(quán)限管理(通過「AppOpsX」模塊精細(xì)化控制應(yīng)用權(quán)限,或偽造設(shè)備指紋繞過應(yīng)用風(fēng)控檢測)、Root隱藏(結(jié)合「Shamiko」模塊繞過系統(tǒng)安全檢測)。
○ 開發(fā)者調(diào)試與遠(yuǎn)程管理
如動態(tài)分析(集成「Frida-server」模塊進(jìn)行應(yīng)用逆向與動態(tài)Hook)、遠(yuǎn)程訪問模塊(部署「MagiskSSH」模塊通過SSH協(xié)議遠(yuǎn)程控制設(shè)備)、兼容性測試(偽造設(shè)備型號和Android版本號,驗(yàn)證應(yīng)用在不同環(huán)境下的運(yùn)行表現(xiàn))。
○ 可自定義模塊
如開發(fā)模塊實(shí)現(xiàn)批量安裝應(yīng)用、配置網(wǎng)絡(luò)策略或執(zhí)行定時任務(wù)等。
3. Zygisk 動態(tài)注入
自v24版本引入的 Zygisk 技術(shù),通過注入 Android 系統(tǒng)核心進(jìn)程 Zygote,實(shí)現(xiàn)更高效的模塊運(yùn)行和隱藏 Root 檢測能力。
4. Hide 模式
可針對特定應(yīng)用(如銀行App、游戲反作弊系統(tǒng))隱藏 Root 狀態(tài),配合「Shamiko」等插件可繞過 90% 以上的 Root 檢測機(jī)制。
Magisk 部署
本次基于Firefly RK硬件平臺,Android in Docker 環(huán)境下完成 Magisk Delta(fdac22ba版本)的無損部署,無需修補(bǔ) boot 分區(qū)或修改系統(tǒng)鏡像。
部署設(shè)備軟硬件信息
設(shè)備:ROC-RK3588S-PC
固件:ROC-RK3588S-PC_Ubuntu20.04-Minimal-r2407_240929
設(shè)備系統(tǒng)環(huán)境:已完成【技術(shù)案例-Android in Docker】環(huán)境搭建
安裝步驟
1. 將magisk.tar、magisk_setup.rc、setup.sh 導(dǎo)入宿主機(jī)
//若宿主機(jī)已連接互聯(lián)網(wǎng),可通過 SCP 命令導(dǎo)入宿主機(jī)scp ./magisk_delta_fdac22ba/magisk.tar root@xxx.xx.xx.xx:/root/scp ./magisk_delta_fdac22ba/remove.rc root@xxx.xx.xx.xx:/root/scp ./magisk_delta_fdac22ba/setup.sh root@xxx.xx.xx.xx:/root/ //或者通過adb 的方式push到宿主機(jī)adb push ./magisk_delta_fdac22ba/magisk.tar /root/adb push ./magisk_delta_fdac22ba/magisk_setup.rc /root/adb push ./magisk_delta_fdac22ba/setup.sh /root/
2. 設(shè)置 magisk_setup.rc 權(quán)限
root@firefly:~# chmod 644 /root/magisk_setup.rcroot@firefly:~# ls -l /root/magisk_setup.rc-rw-r--r-- 1 root root 979 May 13 07:23 /root/magisk_setup.rc
3. 修改宿主機(jī)中的 container/aic.sh 啟動腳本
run_cmd "docker run -itd --restart=always --privileged $CONTAINER_NAME $HOST_NAME $DATA_BIND \ $CONFIG_COMMON $CONFIG_PRIVATE \ $CONTAINER_NETWORK $CONTAINER_MAC $CONTAINER_IP $PORT_BIND \+ -v ~/magisk_setup.rc:/vendor/etc/init/magisk_setup.rc \+ -v ~/setup.sh:/setup.sh \+ -v ~/magisk.tar:/magisk.tar \ $ANDROID_IMAGE"
4. 初次啟動時執(zhí)行
./aic.sh -i # 首次初始化./aic.sh -r <安卓鏡像.tgz> <容器數(shù)量>
Magisk 功能驗(yàn)證與使用
安裝驗(yàn)證
1. 宿主機(jī),需要連接外網(wǎng)
2. 查看容器狀態(tài)
root@firefly:/userdata/container# docker ps -a --format "table {{.ID}}\t{{.Ports}}"CONTAINER ID PORTS725921edb3a2 0.0.0.0:1100->5555/tcp, :::1100->5555/tcp
3. 查看宿主機(jī)IP
root@firefly:/userdata/container# ifconfig eth0eth0: flags=4163 mtu 1500 inet 172.16.10.211 netmask 255.255.0.0 broadcast 172.16.255.255 inet6 fe80:d724ffed prefixlen 64 scopeid 0x20 ether 6a:01:8e3f:2c txqueuelen 1000 (Ethernet) RX packets 384418 bytes 118264726 (118.2 MB) RX errors 0 dropped 38243 overruns 0 frame 0 TX packets 127586 bytes 29265180 (29.2 MB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 device interrupt 92
4. PC 使用 ADB 連接容器,并且投屏
lwy@DESKTOP-KGTB0I2: adb connect 172.16.10.211:1100lwy@DESKTOP-KGTB0I2: scrcpy.exe -s 172.16.10.211:1100
· 首次啟動需進(jìn)入 APP 完成初始化重啟
· 驗(yàn)證版本號:fdac22ba-delta(25210(D))
Magisk 核心功能演示
Superuser 授權(quán)
lwy@DESKTOP-KGTB0I2: adb -s 172.16.10.211:1100 shell13|rk3588_docker:/ $ surk3588_docker:/ #
終端中輸入su, Magisk會彈出一個提示框,點(diǎn)擊Grant完成授權(quán)。
Zygisk 啟用
Magisk 設(shè)置界面 ->開啟 zygisk ->重啟,重啟后界面 zygisk 欄顯示 yes
應(yīng)用隱藏
Magisk 設(shè)置 -> Hide Magisk -> 選擇偽裝應(yīng)用,等待完成后,圖標(biāo)變更為 Settings
Magisk 模塊應(yīng)用演示
Lsposed
//PC直接導(dǎo)入LSPosed-v1.9.1-6990-zygisk.zipadb -s 172.16.10.211:1100 push LSPosed-v1.9.1-6990-zygisk.zip /sdcard/
Magisk 模塊界面加載 LSPosed-v1.9.1-6990-zygisk.zip ->重啟生效。
MagiskSSH
同理,將SSH_for_Magisk-v0.22_22.zip 導(dǎo)入容器,Magisk模塊界面加載后重啟
//PC直接導(dǎo)入SSH_for_Magisk-v0.22_22.zipadb -s 172.16.10.211:1100 push SSH_for_Magisk-v0.22_22.zip /sdcard/
使用終端或者Termux 輸入命令`ssh user@192.xxx.x.xxx`和登錄密碼,即可登錄,更多使用方式,如免密碼登錄可參考 SSH_for_Magisk-v0.22_22.zip 的 Readme 文檔。
技術(shù)資料獲取
Magisk 通過 Systemless 架構(gòu)為 Android 系統(tǒng)構(gòu)建了可擴(kuò)展的技術(shù)基礎(chǔ),開發(fā)者可基于其模塊化接口靈活開發(fā)定制功能組件。平臺提供標(biāo)準(zhǔn)化的開發(fā)框架,支持從權(quán)限管理到硬件調(diào)優(yōu)的全維度定制能力。
目前案例基于 Firefly 硬件平臺演示了 Lsposed 和 MagiskSSH 兩個模塊,開發(fā)者可基于此平臺挖掘更多的玩法和系統(tǒng)定制開發(fā)。Android in Docker 環(huán)境下 Magisk 的完整部署資料,請聯(lián)系 Firefly 開源團(tuán)隊(duì)獲取。
-
Android
+關(guān)注
關(guān)注
12文章
3971瀏覽量
129890 -
開發(fā)者
+關(guān)注
關(guān)注
1文章
636瀏覽量
17468 -
Docker
+關(guān)注
關(guān)注
0文章
514瀏覽量
12843
發(fā)布評論請先 登錄
如何在RDKx3部署docker鏡像?
Docker入門指南
Jenkins+docker+springboot一鍵自動部署項(xiàng)目
linux docker安裝部署
docker部署mysql的壞處
docker部署對性能的影響
華為云 X 實(shí)例部署 Docker 應(yīng)用的性能評測優(yōu)化與實(shí)踐指南

【技術(shù)案例】Android in Docker

評論