gpt4 book ai didi

android - 使用 root 访问权限在 Android 6.0+ 中修改另一个应用程序的 SQLite 数据库

转载 作者:行者123 更新时间:2023-11-30 01:36:39 25 4
gpt4 key购买 nike

我在 Android 中有一个应用程序需要使用 root 修改其他应用程序的私有(private)数据库。目前的方法适用于包括 Lollypop 在内的所有设备,但由于 SELinux 的缘故,在 Marshmallow 设备上似乎失败了。

要修改数据库,该应用会执行以下操作:

  • 从根:
    • 将目标数据库复制到我的应用程序的文件夹中,保留权限和所有权 (cp -p)
    • 更改权限(chmod 777)
  • 在应用程序中,使用 SQLiteDatabase 类打开数据库并执行查询
  • 从根
    • 移回数据库并恢复权限

但是,在 Marshmallow 上,尝试使用 SQLiteDatabase 打开复制的数据库失败并产生以下 AVC 拒绝:

avc: denied { open } for path="/data/data/<my app package>/cache/<database>.db" dev="dm-0" ino=509488 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:app_data_file:s0 tclass=file permissive=0

我唯一尝试过的是以 root 身份在文件上运行 chcon u:r:untrusted_app:s0,但它说权限被拒绝。

此外,根据我在这里阅读的内容:https://source.android.com/security/selinux/ , 似乎 SELinux 在 5.0 版本中设置为强制模式,那么为什么这现在只是 6.0 上的一个问题而不是 5.0 上的问题?

最佳答案

我刚刚为我的一个应用完成了这样的事情,所以它可以在 Pixel 设备上运行 Android 7。

像您一样,我将原始数据库文件复制到我的应用所在的位置。然后我不仅对它们进行 chmod,而且还将它们 chown/chgrp 到我的应用程序的 uid。最后,我将数据库文件 chcon 到在其原始位置为它们找到的上下文。然后,我可以通过我的应用程序中的 SqliteDatabase 类访问和操作它们。

完成后,我将数据库文件移回其原始位置,chown/chgrp 将它们返回到拥有应用程序的 uid,然后恢复它们。

这是一个巨大的痛苦。但到目前为止,它似乎在我的有限测试中有效。但请注意,在更高版本的 Android 中,工具箱命令似乎已被玩具箱命令取代,这确实会影响 chown/chgrp。工具箱版本允许在同一命令中更改所有者和组。 Toybox 没有,因此您必须同时发出 chown 和 chgrp 命令。

可能还有其他命令更改。例如,在 Pixel 上,grep 命令现在是一个独立的二进制文件,而不是工具箱或玩具箱的一部分。

关于android - 使用 root 访问权限在 Android 6.0+ 中修改另一个应用程序的 SQLite 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35021483/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com