總貼 在這裡。
哦,說句題外話,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關於軟連線和硬連線的介紹,看這裡
小結一下。上面介紹了通過zygote
和kernel的系統呼叫
的修改。在開啟新應用的時候動態建立目錄,動態對映目錄,做到了檔案系統隔離的效果。
其實在android8之後,規範的寫android,機會可以不用用到外部儲存,所以應用裡面的簡單沙盒其實是夠用的。
不夠用的時候,可能是出於唯一標識&&安全方面的考量。
android開發學習之三
主要內容 activity 開發程式中顯示的介面,應用程式的門面。intent 應用程式中所有資料的傳輸介質。service 承擔著大部分資料處理的工作。contentprovider 負責儲存資料,並允許需要資料的應用程式訪問資料。sdk 軟體開發包,包含特定的軟體包 軟體框架 硬體平台 作業系統...
android 問題彙總系列之三
1 連續addview報錯的問題,求教 已解決 2 我們自己程式向系統聯絡人新增修改資料,會影響其同步?3 請教乙個傳送郵件的問題 4 我想讀取assets下面的乙個檔案下面所有的txt檔案 未知 5 50高分懸賞 菜鳥問題!未知,感謝tiancaiztc的幫助 6 藍芽連線印表機列印問題 未知,感...
Android問題集錦之三十 SDK離線文件開啟慢
不知從什麼時候起,開啟離線文件成了一件不容易的事情,原因是雖然是離線的文件,但是有很多內容需要連線android官網,等到超時後才能開啟。這一點google做的不地道,你給大家的文件明明是離線的,為什麼還要聯網才行?我們怎麼辦呢?改檔案肯定是不行的,太多了。把網路斷掉也不太可行。那麼就從瀏覽器入手,...