Deamon as root, launchctl load xxx.plist报错,重启无反应


#1

参照 http://bbs.iosre.com/t/run-a-daemon-as-root-on-ios/212 写 daemon
总是报错 信息如下:
dpkg-deb -c com.cuit.rootdaemonserver_0.0.1-39_iphoneos-arm.deb
drwxr-xr-x a360/staff 0 2015-04-09 14:31 ./
drwxr-xr-x a360/staff 0 2015-04-09 10:45 ./Library/
drwxr-xr-x a360/staff 0 2015-04-09 14:23 ./Library/LaunchDaemons/
-rw-rw-r-- a360/staff 410 2015-04-09 14:23 ./Library/LaunchDaemons/com.cuit.rootdaemonserver.plist
drwxr-xr-x a360/staff 0 2015-04-09 14:31 ./usr/
drwxr-xr-x a360/staff 0 2015-04-09 14:31 ./usr/bin/
-rwxr-xr-x a360/staff 50640 2015-04-09 14:31 ./usr/bin/rootdaemonserver
plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>Label</key>
	<string>com.cuit.rootdaemonserver</string>
	<key>ProgramArguments</key>
        <array>
            <string>/usr/libexec/rootdaemonserver</string>
        </array>
	<key>RunAtLoad</key>
	<true/>
</dict>
</plist>

试过改了权限跟 openssh daemon一样 依然报错 chown root:wheel xxx.plist

然后改plist 格式和 Library/LaunchDaemons/com.openssh.sshd.plist 一样还是报错
不知道怎么回事,google说是格式问题
plutil -linit 是显示 OK 的

直接load 报错,如果安装后 reboot 直接无反应。
iPhone4:/ root# launchctl load Library/LaunchDaemons/com.cuit.rootdaemonserver.plist
launchctl: Dubious permissions on file (skipping): Library/LaunchDaemons/com.cuit.rootdaemonserver.plist
nothing found to load

二进制文件可以直接执行成功!就是不能

static void Reboot(CFNotificationCenterRef center, void *observer, CFStringRef name, const void *object, CFDictionaryRef userInfo)
{
        NSLog(@"Cuit: reboot");
        system("reboot");
}
void CFRunLoopRun()
{
    while(1)
    {
           NSLog(@"Cuit: ~_~");
            sleep(3);
    }
}
int main(int argc, char **argv, char **envp)
{
	NSLog(@"Cuit: rootdaemonserver is launched");

	CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(), NULL, Reboot,
                                    CFSTR("com.cuit.rootdaemonserver.reboot"),
                                    NULL,//If NULL, callback is called when a notification named name is posted by any object.
                                    CFNotificationSuspensionBehaviorCoalesce);
        CFRunLoopRun(); // keep it running in background
	 NSLog(@"Cuit:  end");
	return 0;
}

#2

原帖里有这段话,需要改的不仅仅是plist文件,而是deb里的所有文件


#3

恩 改写 chown root:wheel xxx.plist 一样的原理


#4

什么意思?
你也可以看看这篇译文


#5

因为这个deb文件是在OSX上打包的,所以它所属的用户就是snakeninny。为了将它的所属用户改为root:wheel,我们需要一个叫做fauxsu的工具。下载这个工具,将解压得到的fauxsu和libfauxsu.dylib复制到$THEOS/bin/ 目录下,然后运行chmod a+x。重新打包检查一次
这个工具的功能就相当于执行命令 chown root:whell xxx.plist 我尝试成功的


#6

我在 ios 上chown root:wheel 没有作用, plist 和 执行文件都弄了,但是没有作用


#7

楼主,我的 fauxsu不起作用,改不了所属用户,用chown root:wheel 手动改了,但是没有作用


#9

@xingbei 貌似搞定了iOS 9下的daemon ,可以问问他


#10

谢谢,狗神


#11

请问一下fauxsu工具在哪里下载的?我用狗神给的链接下载下来的文件夹里面没有fauxsu和libfauxsu.dylib,求指导