iOS App的Root权限

时间:2016-08-24 23:13:58

标签: ios root jailbreak

我正在开发针对越狱iOS设备的应用。它有助于自动执行某些任务。我需要在/ private / var / mobile / Library中创建一个简单的文本文件(实际上是.lua文件)。显然,调试器会抛出访问被拒绝的异常。该应用程序现在被命名为“CreateFile”,用于测试。

我尝试了以下步骤来获取root权限:

  1. 正常构建应用程序。
  2. 在应用包中创建可执行文件的副本。
  3. 打开原始可执行文件并使用以下脚本替换其内容:

    #!/bin/bash
    dir=$(dirname "$0")
    exec "${dir}"/CreateFile "$@"
    

    在iOS上直接启动根应用程序失败。因此,我们使用启动根可执行文件的脚本替换应用程序的主可执行文件。

  4. 在终端中,导航至应用包。

  5. chmod 0775原始可执行文件和chmod 6775复制的可执行文件。
  6. 将应用程序包复制到/ Applications到设备。重启SpringBoard,你应该好好去。如果应用程序未启动,请重复步骤5& 6在设备上。
  7. 使用此方法,我可以成功将应用程序安装到/ Applications文件夹并启动它,但是我希望我仍然没有root权限,因为只要应用程序尝试写入操作,它就会崩溃。

    如果有人能对这种情况有所了解,我将非常感激!

    编辑:

    在@creker的建议下做了一些额外的测试。当我尝试在应用程序的文档中创建允许目录中的文件时,它创建就好了,没有任何问题。因此,我确信文件创建不会导致崩溃,并且它只是无法访问的文件夹路径。

    同样在@creker的建议下,我尝试将应用程序安装到/ Applications而没有任何启动脚本。应用程序以这种方式打开时崩溃。如果我在安装后将应用程序可执行文件chmod到775,则应用程序将打开但在尝试创建文件时仍会崩溃。

    我查看了崩溃记者的系统日志。这是崩溃线:

    System.UnauthorizedAccessException: Access to the path "/private/var/mobile/Library/test.txt" is denied
    

    仍然希望能够解决这个问题,欢迎任何想法!

1 个答案:

答案 0 :(得分:1)

随着安全措施的增加,在iOS上获取root权限越来越难,即使是越狱也是如此。 root帐户在每个版本中获得的权限越来越少,但仍然可以使用此帐户。您可以通过确保您的应用程序二进制文件由root:wheel拥有,然后设置SETUID位来执行此操作。

chown root:wheel app_binary
chmod +s app_binary

然后在您的应用中添加以下内容以利用它

@autoreleasepool
{
    // Set uid and gid
    if (!(setuid(0) == 0 && setgid(0) == 0))
    {
        NSLog(@"Failed to gain root privileges, aborting...");
        exit(EXIT_FAILURE);
    }

    // Launch app
    return UIApplicationMain(argc, argv, nil, NSStringFromClass([MyAppDelegate class]));
    /* you'll need to modify this return line to match your app */
}

您还需要一个启动脚本才能在iOS 6以上的版本中使用它

#!/bin/bash
myAppPath=$(dirname "$0")
exec "$myAppPath"/myApp_ "$@"