来自其他应用程序的调用方法(Jailbreak iOS)

时间:2013-10-06 20:47:01

标签: ios jailbreak tweak

在越狱的iOS设备上,一个应用程序是否可以从另一个应用程序(实例方法,而不是静态方法)调用方法?另一种表达方式:如何获取应用程序的实例(假设应用程序正在运行),以便我可以调用其中一种方法?

背景:我正试图通过iPodUI私有框架中的钩子方法调用音乐播放器应用中的某个功能(有关详情,请参阅this post)。

此问题已被要求Android,但我没有找到任何适用于越狱iOS的内容。如果那是因为我问的是错误的问题并且采取了不同的方法,我会对此持开放态度。

1 个答案:

答案 0 :(得分:2)

实现这一目标的一种简单而另一种方法是使用cycript和system()调用,但请注意使用system()之前的危险,因为它可能不安全(据我所知,这并不是那么多)在越狱的iOS上很重要,一切都非常不安全)

让我们假设您有一个类似[[SomeClass sharedInstance] methodToBeCalledExternally]的方法,您想从其他进程调用

您可以将该调用保存到/tmp/something.cy

中的文本文件中

然后通过运行:

从外部注入该代码
cycript -p Music /tmp/something.cy

但是如果你需要以编程方式进行,当然如果环境没有沙箱(我认为它不是),那么你可以这样做:

system("cycript -p Music /tmp/something.cy")

通过这种方式,您可以在代码中的任何进程(在本例中为音乐应用程序)中执行任意ObjC代码。

最后,不要忘记删除文件/tmp/something.cy,因为您将不再需要它