iOS调整不加载

时间:2014-07-15 20:32:07

标签: ios iphone jailbreak tweak cydia-substrate

我正在开发一个小调整,用于更改/var/preferences中的某些文件。这是我的构造函数:

%ctor
{
    NSLog(@"\n\n\n Tweak Loading... \n\n\n ");

    NSError *error = [[NSError alloc] init];
    BOOL success = [[NSFileManager defaultManager] copyItemAtPath:somePath toPath:someOtherPath error:&error];
    if (success)
    {
        NSLog(@"\n\n\n Success:) \n\n\n ");
    } else {
        NSLog(@"\n\n\n Failure! \n\n\n ");
    }

    //Method hook initialization
    %init;
}

由于/var/preferences/用户无法访问mobile,因此应在根进程中加载​​调整。通过一点点搜索,我发现wifid具有root权限。所以我将过滤器更改为com.apple.wifid过滤器以获取包标识符。

重新启动wifid守护程序后,没有任何反应,并且未加载调整。我认为这是一个特定的守护进程的问题所以我写了一个简单的命令行工具进行测试,其中有一个runloop(它就像一个启动守护进程,而不是在启动时没有plist)。然后我将plist修改为:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Filter</key>
    <dict>
        <key>Executables</key>
        <array>
            <string>myExecutableName</string>
        </array>
    </dict>
</dict>
</plist>

再一次没有任何反应,并且没有加载调整。我怎么解决这个问题?为什么不在这些过程中调整负载?

1 个答案:

答案 0 :(得分:0)

这是一个非常“脏”的解决方案,只是为了以root身份运行(看似)无关的任务而挂钩到像wifid这样的根进程。就像克里克所说的那样,您可以将您的任务作为LaunchDaemon运行,甚至可以在以root身份运行的应用程序中运行您的任务。无论哪种方式都比连接到现有流程更有意义,以做一些似乎与流程无关的事情。