iOS 越狱之后,使用 Xcode 编写程序在设备上运行是 mobile 用户,没有 root 权限,所以有些私有函数还是没法使用,比如 MGCopyAnswer 获取 UDID、序列号等等信息都返回空,必须使用 root 运行才行。
iOS 的应用安装目录有两个,一个是 /private/var/mobile/Containers/Bundle/Application,一个是 /Applications,使用 Xcode 安装或者在 Appstore 上下载安装的应用都是前者,后者一般是系统自带的应用。如果想让应用以 root 身份运行,可以按以下的步骤来操作
1.在你应用的 main 函数添加代码
setuid(0);
setgid(0);
2.将生成的应用上传到 /Applications/yourApp.app
3.这时桌面上是没有图标的,需要登录 ssh 运行 uicache 命令就可以显示图标了,这个命令比有管用,经常用于修复没有图标的问题。
4.再执行 chown root yourApp,更改所有者为 root
5.然后切换到应用的目录,运行 chmod u+s yourApp
这时在手机上点击你的应用,通过 ps aux 命令查看进程运行的用户就是 root,而不是 mobile。
以上方法在 iOS8 平台没有问题,如果是 iOS 9 就得再多一个步骤
6.由于 iOS9 安全限制,不允许 root 权限的应用启动,启动之后,你会反现马上就退出了。可以将你原来的应用的可执行文件改名,比如改成 yourApp_,然后再新建一个 yourApp 名称的脚本并 chmod 755 设置可执行权限,脚本内容如下
1 2 3 |
#!/bin/bash root=$(dirname "$0") exec "${root}"/yourApp_ |
相当于 yourApp 脚本执行之后,会执行 yourApp_,这样就正常可以启动了。