0

我在尝试为 Android 创建自定义文件访问记录器时遇到麻烦。我检查了 FileObsever,但我需要获取有权访问某个文件列表的进程的 PID(USERID 也很有用)。

我也尝试了不同的选择,但没有成功。

是否可以使用 PID 访问某些文件进行记录?

问候!

4

1 回答 1

0

有一些关于将 PID 报告添加到 Linux inotify() 机制的讨论(这可能是 FileObserver 的基础),但我没有从最初的搜索中发现它是否真的被合并并因此被 Android 继承 - 如果它是的,它可能只适用于具有管理权限的监视器的外国 UID。

您可以尝试使用 FileObserver,然后通过扫描 /proc 以查找 fd 来模仿 lsof,无论您在 Android 上被允许这样做的程度(有限?)。然而,这会给您带来竞争条件问题 - 在您看到“谁做的”之前,文件可能会再次关闭。

如果您真的想这样做,您可能需要一个自定义 ROM - 您可以应用任何必要的补丁来进行 inotify 并为您的安全应用程序授予权限,或者(如果您更喜欢那样)禁用报告的权限检查。

我对补丁的发现 - 当前合并状态未知:

http://lwn.net/Articles/307536/

直接使用 inotify() 的介绍(没有 PID 报告):

http://www.linuxjournal.com/article/8478?page=0,0

于 2012-05-10T18:21:08.097 回答