Kenxin
(Kenxin)
1
我在tweak里使用[LSApplicationWorkspace openApplicationWithBundleID] 或者 [UIApplication launchApplicationWithIdentifier:suspended:]来启动一个自己的app(root程序,setuid和setguid过),然后就出错,但启动其他的app,比如Preferences或者AppStore等就没有问题,是新的限制吗,怎么突破?(8.x和7.x里是没有问题的)
Aug 19 17:32:14 5s933 SpringBoard[2135] : Unable to
obtain a task name port right for pid 2210: (os/kern) failure (5)
Aug 19 17:32:14 5s933 SpringBoard[2135] : Unable to
obtain a task name port right for <FBApplicationProcess: 0x127c289b0;
com.test.myapp; pid: 2210>
Aug 19 17:32:14 5s933 SpringBoard[2135] : Unable to
delete job with label UIKitApplication:com.test.myapp[0x94c7]. Error:
Operation now in progress
Aug 19 17:32:14 5s933 SpringBoard[2135] : Application
‘UIKitApplication:com.test.myapp[0x94c7]’ exited for an unknown reason.
权限问题,一个非root App是不能启动root App的,参考这个帖子。
另外,在新的iOS里,你是怎么打包root App的,能开个帖子分享一下吗?上面那个链接提到的方法已经失效了。
Kenxin
(Kenxin)
3
我也觉得是权限问题,但不知道具体怎么解决。
设置权限就是参考你的帖子,打包是直接ssh到手机上使用命令dpkg -b来打包的,按照目录结构创建Applications和DEBIAN,分别放入app和control文件,然后运行命令行即可。
Update:
刚才特意cycript看了一下,8.4和9.3.3里SpringBoard都是501的mobile权限,但8.4没任何问题。不知道怎么回事。
更奇怪的是,我在cycript中执行tweak中一模一样的代码,却完全没有问题,彻底晕了。
Update2:
hook了一个root权限的daemon(uid和euid都是0),发现还是没用,照样起不来。。。基本可以确定是系统限制了吧?!@snakeninny
Kenxin
(Kenxin)
4
各种尝试,还是不行。哎。
我甚至使用了最新的能够使用private API的iOS9.2全部重新编译一次,然后运行,还是不行。。。真无解了吗,等待接触过并解决的人的到来
Kenxin
(Kenxin)
6
cycript -p SpringBoard这样运行代码,是没有问题的,可以正常启动。
CLT?指的什么,能说详细点吗?谢谢了。我hook的是lockdownd这个daemon
你的tweak注入的是哪个进程?
CLT是command line tools的缩写
Kenxin
(Kenxin)
8
注入的就是SpringBoard。后来注入到了lockdownd里。都是一旦启动就挂掉。使用的是[LSApplicationWorkspace openApplicationWithBundleID] 。有什么建议吗?
我在想是不是要更新ldid,但不会编译依赖库。。。
budou
9
你好,我也遇到类似的一个问题(已解决),不知道对你有没有帮助。
我在hook SpringBoard的时候,要传一个文件位于/var/root/Library/Caches文件夹内,文件存在
但是API调用始终说文件不存在,我这边找到的症结就是Caches这个文件夹属于root:wheel,
**而且它的access permissions那一栏里Group和World都是没有权限的。**无论是修改root:wheel
为mobile:mobile,还是给Group和World赋予权限,都可以解决这个问题。
(其他文件即使是root:wheel也可以找到,猜测就是因为其Group和World有权限)。
所以我想,你可以查看一下你的APP的Group和World的权限。
另外请问一下,怎么在Cyript里查看SpringBoard的权限?谢谢啦
Kenxin
(Kenxin)
10
我已经放弃那个方案了,以后有机会的话,可以试试,谢谢分享。
cycript到SB后,直接getuid(),回车即可查看返回值,9.3.3里返回501就是mobile,还有getgid(), geteuid()等函数。