android虛擬手機雲之三 檔案沙盒

2021-08-16 08:11:51 字數 1265 閱讀 1668

總貼 在這裡。

哦,說句題外話,android系統的東西都是放在/data/data下的,許多奇奇的目錄都是符號連線,rm -rf /data/data/*就可以達到出廠設定的效果。

ok,我們的方案是怎麼做的呢,有幾個點:

pid != 0之後

if (access (abs_path, f_ok) < 0) 

if (temp_failure_retry (mount (source_path, abs_path, null, ms_bind, null)) < 0)

值得一提的是,zygote fork程序之後,通過設定

setcapabilities(env, permittedcapabilities, effectivecapabilities);
把linux上的許可權給閹割了,這也是為什麼su要在另外乙個程序執行的原因(因為zygote 建出來的程序就沒有任何許可權)

kernel部分,主要是修改syscall部分。就是把open、access等系統調調的時候,獲取標識位,看看是不是hook過的,如果是的話,就對映下讀取路徑。這樣的話,/data/data下的檔案路徑就被對映到我們上面mount的路徑中去了。

kernel/fs/open.c

#ifdef config_intercept_file_syscalls

/* lionfore for ml. sep 11th, 2017 */

if (this_process_should_be_intercepted ())

}#endif

需要注意的是readlink這個系統呼叫也要改,**在

kernel/fs/namei.c

關於軟連線和硬連線的介紹,看這裡

小結一下。上面介紹了通過zygotekernel的系統呼叫的修改。在開啟新應用的時候動態建立目錄,動態對映目錄,做到了檔案系統隔離的效果。

其實在android8之後,規範的寫android,機會可以不用用到外部儲存,所以應用裡面的簡單沙盒其實是夠用的。

不夠用的時候,可能是出於唯一標識&&安全方面的考量。

android開發學習之三

主要內容 activity 開發程式中顯示的介面,應用程式的門面。intent 應用程式中所有資料的傳輸介質。service 承擔著大部分資料處理的工作。contentprovider 負責儲存資料,並允許需要資料的應用程式訪問資料。sdk 軟體開發包,包含特定的軟體包 軟體框架 硬體平台 作業系統...

android 問題彙總系列之三

1 連續addview報錯的問題,求教 已解決 2 我們自己程式向系統聯絡人新增修改資料,會影響其同步?3 請教乙個傳送郵件的問題 4 我想讀取assets下面的乙個檔案下面所有的txt檔案 未知 5 50高分懸賞 菜鳥問題!未知,感謝tiancaiztc的幫助 6 藍芽連線印表機列印問題 未知,感...

Android問題集錦之三十 SDK離線文件開啟慢

不知從什麼時候起,開啟離線文件成了一件不容易的事情,原因是雖然是離線的文件,但是有很多內容需要連線android官網,等到超時後才能開啟。這一點google做的不地道,你給大家的文件明明是離線的,為什麼還要聯網才行?我們怎麼辦呢?改檔案肯定是不行的,太多了。把網路斷掉也不太可行。那麼就從瀏覽器入手,...