2016-08-24 150 views
15

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

我已经尝试以下步骤来获得root访问权限:

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

    #!/bin/bash 
    dir=$(dirname "$0") 
    exec "${dir}"/CreateFile "[email protected]" 
    

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

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

  5. chmod 0775原始可执行文件和chmod 6775复制的可执行文件。
  6. 将应用程序包复制到/应用程序到设备。重新启动SpringBoard,你应该很好去。如果应用程序未启动,请在设备上重复步骤5 & 6。

使用此方法,我可以成功地将应用程序安装到/ Applications文件夹并使其启动,但是我期望我仍然没有root权限,因为只要应用程序尝试执行写入操作,它就会崩溃。

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

编辑:

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

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

我从崩溃记者那看着系统日志。这里是死机线:

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

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

+0

你不需要根权限来在'/ var/mobile/Library'中创建一个文件。 '/ var/mobile'是'mobile'用户的主目录。除非您受到沙箱规则的限制,否则该目录是完全可访问的。 – creker

+0

然后,我必须受到沙箱规则的限制,因为我在尝试写入该目录时遇到访问被拒绝的违规行为。是否有任何不同的步骤? – Kikootwo

+1

不,你只需要在'/ Applications'目录下。你甚至不需要启动脚本。也许你的应用崩溃的原因不同。 – creker

回答

0

随着安全措施的升级,即使是越狱,在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_ "[email protected]" 
相关问题