2012-03-10 60 views
0


我正在製作一個Cydia應用程序,它具有安裝文件的權限。我需要能夠獲得/應用程序的根訪問權限。我看過here,但有點不清楚。有人可以解釋它好一點嗎?給Cydia應用程序根權限

謝謝!

+0

看看[這個答案也是](http://stackoverflow.com/a/8796556/119114) – Nate 2013-03-12 01:26:37

回答

1

您可以使用此

setuid(0); 
system("/path/to/script.sh"); 

其中path to腳本是在你的應用程序的腳本,將安裝文件

setuid(0); 
system("cmd"); 

其中cmd是命令,如

setuid(0); system("echo Hello World"); 

您也可以通過這種方式登錄到/tmp目錄或任何其他地方。

setuid(0); system("echo Hello World >> /tmp/install.log"); 

setuid (0);給它的root訪問權限和system (cmd);是實際的命令

要小心你如何使用它作爲根有無處不在的訪問。

2

切勿使用帶setuid的系統!例如,如果有惡意的人將PATH更改爲/tmp:$PATH,並且此人將他們自己的程序添加到/ tmp並將其命名爲「ls」,那麼即使運行此簡單代碼也會讓他們能夠訪問您的設備:

setuid(0); system("ls"); 

相反,您應該使用exec系列函數,但不使用execvp/execlp。

+0

解決這個問題的另一種方法是完全限定你傳遞給'system()'的命令,比如'/bin/ls'而不是'ls'。 – Nate 2013-03-12 01:23:44

+0

@Nate:不完全。 'export IFS = /' – C0deH4cker 2013-03-12 02:55:54

+0

如果你聲稱'export IFS = /'會將'/ bin/ls'命令轉換成'bin ls',它可以運行一個名爲'bin'的惡意腳本放在PATH的某個地方不,它不會。我在越獄的iPhone上嘗試過。還試着'導出IFS ='/''。這是一個非常古老的漏洞,它看起來像越獄的iOS外殼已經修復。 – Nate 2013-03-12 04:14:02