首先,只有在越狱的ios设备上才可以获取root权限,未越狱就不用考虑了!
思路:用具有普通权限的app引导具有root权限的app。假设你的应用程序为Demo,引导程序为Start。
具体步骤如下:
1、在Demo工程main.m文件开头添加一句:setuid(0);编译你的程序。进入Demo.app文件把Demo的执行文件改名为Demo_
2、在Start工程main.m文件开头添加一下代码:
NSString* string = [[NSBundle mainBundle]pathForResource:@"Demo_" ofType:nil];
argv[0] = (char*)[string UTF8String];
execve([string UTF8String], argv, NULL);
编译程序,进入Start.app文件夹将执行文件Start拷贝到Demo.app文件夹并且改名为Demo。
3、在桌面新建一个文件夹假设名为test,在test文件夹下再新建两个文件夹分别为:Applications、DEBIAN
4、将Demo.app包拷贝到Applications目录下,将Demo.app中得control可执行文件拷贝到DEBIAN目录下(这属于deb打包的部分,如有问题可以网上搜索解决)
我当时遇到的问题是打包的时候control出错,解决方法:打开control文件在末尾加两行空行。
5、用Terminal进入到Applications/Demo.app目录下,输入以下3条命令:
sudo chown root:admin Demo_
sudo chmod 777 Demo_
sudo chmod u+s Demo_
6、将test目录下的两个文件打包成一个deb文件、命令如下:
sudo dpkg-deb -b ~/Desktop/test ~/Desktop/Demo.deb
7、将生成的Demo.deb拷贝到iOS指定目录下:/var/root/Media/Cydia/AutoInstall。(可以用windows下得91助手,也可以用命令scp拷贝)
8、在iOS设备上用iFile安装deb包,重启iOS设备,OK!