【问题标题】:Android file system hooksAndroid 文件系统挂钩
【发布时间】:2014-01-23 17:33:38
【问题描述】:

请告知是否可以在 Android 设备上拦截/监控文件 I/O。例如。在现有的 Linux 上,我们可能会使用 LSM 或系统调用陷阱。
我希望将所有新创建的文件的文件名记录到文本文件或短信到另一部手机。
感谢您对入门的任何帮助。先感谢您。

干杯, 比尔

【问题讨论】:

    标签: kernel


    【解决方案1】:

    您可以使用 FileObserver 类:

    “监视文件(使用 inotify)在设备上的任何进程(包括这个)访问或更改文件后触发事件。FileObserver 是一个抽象类;子类必须实现事件处理程序 onEvent(int, String )。”

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

    【讨论】:

    • 非常感谢。由于我的要求是停止用户将应用程序下载到公司手机,我想我们可以在检测到下载时删除未批准的文件。我们可以首先拒绝或阻止文件写入,这要干净得多。这可能吗?
    • 好吧,如果下载文件夹总是一样的,用户不能更改,我认为是可以的。当然,在对 AndroidManifest.xml 赋予必要的权限之后。如果你不是为手机编译Android(因此可以更改原始代码),我认为你应该尝试。
    【解决方案2】:

    鉴于 Android 内核支持 inotify,您可以编译一些使用 inotify 报告文件系统活动的工具。

    或者你可以试试pyinotify (http://pyinotify.sourceforge.net/)

    【讨论】:

    • 非常感谢您的积极消息。接下来的问题是我需要采取哪些步骤来在零售 Android 手机上安装内核模块,例如三星或HTC。假设用户(手机所有者)要安装我的工具,我需要三星/HTC 或谷歌的祝福。对不起,如果这听起来像一个愚蠢的问题。谢谢
    • 那(安装内核模块)是不可能的。我认为该模块在固件中默认启用,但您必须对其进行测试。
    【解决方案3】:

    andriod SMS 服务由另一个独立的 java 程序提供,SMS 消息可能存储在 SQLlite 数据库中。 通常是一个恶意程序,它调用 SMS 管理器的服务来轮询其中的内容或发送 SMS 消息。 即使你从内核截取所有磁盘 io,也很难知道是哪个程序触发了这个磁盘 IO 给管理器。 而且也很难从接收到的文件名或数据块中了解 IO 活动的意图。

    如果你想尝试用于学习目的的拦截功能,你可以尝试 Android 中的 ptrace 功能。它很像标准 Linux 中的 ptrace,可以拦截从进程发送的每个系统调用请求。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多