现在的位置: 首页 > 综合 > 正文

越狱ios设备上,如何使应用获取root权限

2013年02月22日 ⁄ 综合 ⁄ 共 1026字 ⁄ 字号 评论关闭

要做一个小工具软件,需要root权限,经过无数的google何尝试,终于解决这个问题。

思路在很多的文章中都有提到,一是要将应用安装到/Applications目录,我是打包成deb,通过Cydia安装;

二是Springboard启动应用时不会赋予应用root权限,如果可执行文件的用户组是root:wheel,并且设置了setuid位,则不会执行,具体表现就是应用启动闪一下就退出了,要绕过这个问题则需要另一个没有设置setuid的可执行文件来起桥梁作用,这个可执行文件伪装成应用的可执行文件,它的作用就是用来启动真正的应用可执行文件。

具体的主要的步骤是:

          1、设备越狱后,确保安装Appsync

          2、假设应用的名字为LostTemp,在目标应用代码的main函数的前面增加setuid(0);setgid(0);两行代码,通过xcode编译好,将应用的bundle(LostTemp.app)拷贝出来备用,将其中的可执行文件改个名字,比如LostTemp_root

          3、编写另外一个可执行文件(我是直接修改上面应用的main函数),其main函数类似下面的形式,编译好之后,将这个可执行文件的名字改为LostTemp,并拷贝进上面所述的LostTemp.app:

     NSString* string = [[NSBundlemainBundle]
pathForResource:@"LostTemp_root"ofType:nil];

  argv[0] = (char*)[stringUTF8String];

    execve([stringUTF8String], argv,
NULL);

4、将LostTemp.app可执行文件LostTemp的权限设置改为755(chmod),LostTemp_root的权限改为4755

5、将LostTemp.app打包为deb,打包的时候将目标安装目录设置为/Application

6、将deb放在设备的/var/root/Media/CyDia/AutoInstall目录下,重启设备,应该就OK了。

主要参考一下几篇文章:

http://o0o0o0o.iteye.com/blog/983311

http://wangxinglong.blog.51cto.com/679714/340161

http://blog.sina.com.cn/s/blog_7879b14f01016q8n.html

抱歉!评论已关闭.