【问题标题】:dalvik-cache preventing file creationdalvik-cache 防止文件创建
【发布时间】:2014-05-20 07:40:46
【问题描述】:

我正在尝试更改 Dalvik VM,以便在 JarFile.cpp 提取 dex 文件时将额外文件提取到 dalvik-cache 目录。 问题是当我使用open() 函数时,我的权限被拒绝!

我知道dalvik-cache 的权限是“系统系统”,但我在其中看到u0_a## 对dex 文件的其他权限。

我可以在 dalvik-cache 中创建 dex 文件,但不能在其他类型的文件中创建。 这个怎么可能?是什么阻止我在文件类型上创建文件?

【问题讨论】:

    标签: android dalvik


    【解决方案1】:

    应用程序无权在/data/dalvik-cache 中创建文件。 dexopt 也没有。

    installd 命令确实具有权限,因此它会创建文件条目并将打开的文件描述符作为参数传递给dexopt

    dexopt 唯一一次直接创建文件是在工程构建上,其中初始引导类是在 zygote 进程启动时创建的。此时,它以具有完整功能的 root 身份运行。

    要创建额外的文件,您需要修改 installd

    【讨论】:

    • 感谢您的回复。如何在应用程序启动时创建文件(这样我可以在完成后删除它)?而不仅仅是安装?
    • 你不能在那里创建它。到应用程序虚拟机运行时,它没有这样做的权限。当然,如果你可以安装修改后的 libdvm.so 副本,你也可以直接将目录的文件权限更改为 777(假设你不担心安全性)。
    • 我担心安全性 ;) 我可以访问 FS 和内核的整个源代码。可能那时,我将使用具有相同权限的 app 目录来保存文件。我需要找到这样做的地方。
    • 利用 su 进行修改可能是一个解决方案。使用 root 访问权限,您可以在 /data/dalvik-cache/ 中工作
    猜你喜欢
    • 2018-05-24
    • 2011-11-24
    • 1970-01-01
    • 2011-03-24
    • 2023-03-21
    • 2021-03-22
    • 1970-01-01
    • 1970-01-01
    • 2013-07-08
    相关资源
    最近更新 更多