2016-08-24 214 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]" 
相關問題