6g下載網
當前位置: 主頁 > 軟件教程 > 手機技術 >

Superuser和su是如何工作?Superuser和su介紹

時間: 2017-11-19 17:09 來源: 6g下載網

分享到:

1、 了解授權機制:

Su 被用戶調用 —> Su創建了一個socket監聽 —> Su 向Superuser發送了一個廣播(即是有一個程序要請求root) —> su等待socket 數據接收(有超時處理) —> Superuser 界面收到廣播后,彈出一個對話框,詢問用戶 —> Superuser 向傳來的數據中的socket寫回用戶應答結果 —> Su 根據socket得到的結果處理應該不應該繼續執行 —> 完成授權管理

2、 superuser是怎么知道誰想用root權限?

superuser 共有兩個activity: SuperuserActivity 和 SuperuserRequestActivity ,其中SuperuserActivity 主要是用來管理白名單的,就是記住哪個程序已經被允許使用root權限了,省的每次用時都問用戶。

SuperuserRequestActivity 就是用來詢問用戶目前有個程序想使用root權限,是否允許,是否一直允許,即放入白名單。

這個白名單比較關鍵,是一個sqlite數據庫文件:

/data/data/com.koushikdutta.superuser/databases/superuser.sqlite

root的本質就是往 /system/bin/ 下放一個su文件,不檢查調用者權限的su文件。普通程序可以調用該su來運行root權限的命令。

3、 su為什么一定要放到system?

adb shell mount 命令可以發現

/dev/block/bootdevice/by-name/system /system ext4 rw,seclabel,relatime,data=ordered 0 0

/dev/block/bootdevice/by-name/userdata /data ext4 rw,seclabel,nosuid,nodev,noatime,noauto_da_alloc,data=ordered 0 0

/dev/block/bootdevice/by-name/cache /cache ext4 rw,seclabel,nosuid,nodev,noatime,noauto_da_alloc,data=ordered 0 0

cache,data分區都是nosuid,所以不能給程序加SUID位,所以無法提權;

4、Android 4.2以后需要通過native service拉起su daemon之類的服務進程才能正常使用root相關功能;

Android 5.x以后需要搞定selinux才能正常使用root相關功能,新版的授權管理一般都帶有類似

seinject的功能來注入安全策略,依靠替換系統服務如zygote等native service;

(責任編輯:大衛)
標簽:Superuser

分享到:

------分隔線----------------------------
? 35选7福利彩票