2011-03-18 116 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非常相似,可以拦截从进程发送的每个系统调用请求。