2011-03-18 156 views
2

請告知是否可以攔截/監視Android設備上的文件I/O。例如。在股票Linux上,我們可能會使用LSM或系統調用陷阱。
我希望記錄所有新創建的文件的文件名 - 文本文件或SMS到另一部手機。
感謝任何幫助開始。先謝謝你。Android文件系統掛鉤

乾杯,

回答

6

可以使用FileObserver類:

「(使用的inotify)監視文件文件後,觸發一個事件由設備上的任何進程訪問或更改(包括此設備)FileObserver是一個抽象類;子類必須實現事件處理程序onEvent(int,String)。「

http://developer.android.com/reference/android/os/FileObserver.html

+1

非常感謝。由於我的要求是阻止用戶將應用下載到公司電話,我想我們可以在檢測到下載時刪除拒登的文件。它更清潔,我們可以首先拒絕或阻止文件寫入。那可能嗎? – 2011-04-13 08:58:59

+0

那麼,如果下載文件夾總是相同的,用戶不能改變它,我認爲這是可能的。當然,在AndroidManifest.xml中添加必要的權限後。如果你沒有爲手機編譯Android(因此可以更改原始代碼),我認爲你應該嘗試。 – 2011-05-20 21:06:48

1

鑑於Android的內核支持inotify的 比爾,你可以編譯一些工具,使用inotify的報告文件系統的活動。

或者你可以嘗試pyinotify中(http://pyinotify.sourceforge.net/)

+0

非常感謝您的好消息。接下來的問題是我需要採取哪些步驟來安裝零售Android手機上的內核模塊,例如三星或HTC。設定用戶(手機所有者)想要安裝我的工具,是否需要三星/ HTC或Google的祝福。對不起,如果這聽起來像一個愚蠢的問題。可能要感謝 – 2011-03-21 17:11:29

+0

(內核模塊的安裝)是不可能的。我認爲這個模塊在固件中默認是啓用的,但是你必須測試它。 – 2011-03-22 03:12:18

0

安卓SMS服務由另一個獨立的Java程序提供與SMS消息可以被存儲在一個數據庫SQLlite。 通常是一個惡意軟件程序,它調用SMS管理器的服務來輪詢其中的內容或發送SMS消息。 即使你攔截了內核中的所有磁盤io,也很難知道哪個程序觸發了該磁盤IO給管理器。 而且很難從知名的文件名或數據塊知道IO活動的意圖。

如果你想嘗試截取功能的adacamic目的,你可以嘗試在Android的ptrace功能。它與標準Linux中的ptrace非常相似,可以攔截從進程發送的每個系統調用請求。