8

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

背景:我正在尝试从iPodUI私有框架中的挂钩方法调用音乐播放器应用程序中的函数(有关详细信息,请参阅此帖子)。

这个问题已经被问到Android,但我没有找到越狱 iOS 的任何东西。如果那是因为我问错了问题并且有不同的方法可以采取,我对此持开放态度。

4

1 回答 1

2

实现此目的的一种简单且替代方法是使用 cycript 和 system() 调用,但是请注意在使用 system() 之前使用它的危险,因为它可能不安全(在我看来,这在越狱的iOS,一切都非常不安全)

假设您有一个[[SomeClass sharedInstance] methodToBeCalledExternally]想要从其他进程调用的方法

您可以将该调用保存到文本文件中/tmp/something.cy

然后通过运行在外部注入该代码:

cycript -p Music /tmp/something.cy

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

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

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

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

于 2014-05-01T21:16:33.910 回答