我正在开发一个面向越狱iOS设备的应用程序,它旨在帮助自动化一些任务。我需要在 /private/var/mobile/Library 中创建一个简单的文本文件(实际上是 .lua 文件)。显然,调试器会抛出访问被拒绝的异常。目前为了测试,该应用程序的名称为“CreateFile”。
我已经尝试了以下步骤来获得 root 访问权限:
我已经尝试了以下步骤来获得 root 访问权限:
- 正常构建应用程序。
- 在应用程序包中创建可执行文件的副本。
打开原始可执行文件并将其内容替换为此脚本:
#!/bin/bash dir=$(dirname "$0") exec "${dir}"/CreateFile "$@"
在iOS上直接启动根应用程序会失败。因此,我们将该应用程序的主可执行文件替换为启动根可执行文件的脚本。
在终端中,导航到应用程序包。
chmod 0775
原始可执行文件并chmod 6775
复制的可执行文件。将应用程序包复制到设备上的 /Applications。重新启动 SpringBoard,然后您就可以使用它了。如果应用程序无法启动,则在设备上重复第 5 和第 6 步。
使用这种方法,我可以成功将应用程序安装到 /Applications 文件夹并启动它,但是我仍然认为我没有 root 权限,因为一旦应用程序尝试写操作,它就会崩溃。
如果有人能为这种情况提供一些帮助,我将不胜感激!
编辑:
按照 @creker 的建议进行了一些额外的测试。当我尝试在允许的目录(如应用程序文档)中创建文件时,它可以完全创建而没有问题。因此,我确定文件创建不会导致崩溃,而是仅与无法访问的文件夹路径有关。
也根据 @creker 的建议尝试在不使用启动脚本的情况下将应用程序安装到 /Applications。这种方式打开应用程序会崩溃。如果我在安装后将应用程序可执行文件的权限设置为 775,则该应用程序将打开,但在尝试创建文件时仍然会崩溃。
我查看了来自崩溃报告器的 syslog,以下是崩溃行:
System.UnauthorizedAccessException: Access to the path "/private/var/mobile/Library/test.txt" is denied
仍然希望解决这个问题,欢迎提出任何想法!
/Applications
目录中。你甚至不需要启动脚本。也许你的应用程序崩溃是因为其他原因。 - creker