最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Magisk hide/Denylist 核心原理分析 ROOT隱藏的實現(xiàn)淺論

2023-06-21 16:00 作者:MeetUnknown  | 我要投稿


前言

當手機安裝magisk后,全局的掛載空間會受到變更,magisk給我們掛載上了一個su二進制,這就是我們能夠訪問到su命令的原因

無論是Magisk hide還是Denylist,我們都可以將它們的工作分成兩個部分,第一個部分是如何監(jiān)控安卓進程的啟動,第二部分是在安卓進程啟動(fork)之后,盡快移除已經(jīng)“污染”的掛載空間


ROOT隱藏關(guān)乎到magisk的核心原理:

mount

我們可以從linux內(nèi)核獲取到mount的相關(guān)信息

全局掛載空間

/proc/mounts

/proc/mountinfo

/proc/mountstats


進程的掛載空間

/proc/pid/mounts

...

如果我們成功刷入magisk, 以下命令將會有大量的掛載信息輸出

cat /proc/mounts |grep magisk


在linux系統(tǒng)中,mount有好多種

我們注意關(guān)注的是“mount --bind

mount --bind命令來將兩個目錄連接起來,mount --bind命令是將前一個目錄掛載到后一個目錄上,所有對后一個目錄的訪問其實都是對前一個目錄的訪問

就是說,我們可以給文件目錄戴上一個“面具”,應(yīng)用程序訪問文件,首先訪問到的是“面具層”,而不是真正的文件。


程序由數(shù)據(jù)和代碼組成,但是,我們也可以說,數(shù)據(jù)和代碼都是基于“文件”, 因此對文件的改動,就能改變程序的運行~

所以我們可以面具實現(xiàn)許許多多的黑科技


在root下的程序可以切換到任意進程的命名空間,進行mount(umount)操作


如果我們使用momo檢測,我們可以發(fā)現(xiàn)magisk這套檢測并非運行得很完美

1. magisk hide 的ptrace容易被檢測到

2. magisk hide 無法對isolated_zygote進程處理,因為isolated_zygote與zygote進程共享掛載空間,如果對isolated_zygote進程進行處理,那么后面所有打開的app無法訪問到su,即無法獲取到root權(quán)限。因此,出現(xiàn)一個名為riru_unshare的插件可以使用unshare函數(shù)指定獨立進程不與zygote共享命名空間。

3. 還有一些可以繞過早期magisk hide(18)的方法,就是自定義安卓的進程名后面加兩個.., 如微信的“:hotpot..”進程會被magisk_hide忽略為無效的隱藏進程而被magisk hide忽視。

上述方法在magisk時代下,幾乎毫無作用的,因為我們可以使用面具隨機地讓某個指定程序看到哪些文件,看不到哪些文件。

magisk hide/denylist 的源碼分析


在magisk 23版本之前, 使用magisk hide進行隱藏, magisk hide使用ptrace監(jiān)控進程啟動,如果是zygote進程且非isolated_zygote進程,則暫停進程,進行umount操作,再繼續(xù)運行進程

Part1 監(jiān)控安卓進程的啟動


在magisk 25版本之后,使用denylist,如果你要使用denylist,那需要先需要開啟zygote,因為denylist通過hook zygote的fork函數(shù)獲知進程的啟動。

denylist與magisk hide也是一樣,都是對污染的命名空間進行卸載,但有一點不同,denylist是在自身的進程執(zhí)行卸載代碼,而magisk_hide在magiskd進程進行操作,需要先使用__switch_to_ns__切換到目標進程的命名空間。


Yyds.Msu 的設(shè)計

Yyds.Msu與magisk hide反其道而行之。大道至簡,盡可能讓方案更加簡單才能更穩(wěn)定。

1. Yyds.Msu 是先卸載,默認應(yīng)用是沒有污染命名空間的,也就是說,直接對zygote以及zygote64進程進行命名空間卸載。

2. Yyds.Msu 在不使用zygote hook與ptrace的情況下,是無法監(jiān)聽其它app進程的啟動的,但可以想辦法監(jiān)聽到y(tǒng)yds.msu管理apk的啟動,那就是inotify,我們只需要讓yyds.msu管理apk在Application時候創(chuàng)建一個文件,即可讓我們魔改過的magiskd知曉到并進行掛載。

3. 缺點是我們無法讓其它app打開即進行掛載獲得到root權(quán)限,在不進行任何hook的情況下除非我們死循環(huán)地地掃描/proc目錄。

4. 在Yyds.Msu中我們手動使用超級運行對指定進程直接掛載root權(quán)限以及相關(guān)magisk bin,但是似乎對某些app來說獲取root權(quán)限有些慢,我們直接對zygote進程掛載root權(quán)限并在app啟動成功后恢復zygote的正常掛載,這個就是超級運行的兼容模式。


Magisk hide/Denylist 核心原理分析 ROOT隱藏的實現(xiàn)淺論的評論 (共 條)

分享到微博請遵守國家法律
监利县| 湖州市| 日喀则市| 五大连池市| 中山市| 皋兰县| 绥江县| 厦门市| 罗源县| 胶州市| 郁南县| 巩义市| 万安县| 高州市| 高密市| 诸暨市| 黔江区| 泊头市| 灵石县| 介休市| 彰化市| 开封县| 平遥县| 马公市| 田东县| 双流县| 嘉黎县| 鲁甸县| 长泰县| 逊克县| 江津市| 慈溪市| 冕宁县| 黎城县| 大足县| 晋城| 盖州市| 廉江市| 长阳| 黄龙县| 平定县|