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

new*_*der 7 tweak jailbreak ios

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

背景:我试图通过iPodUI私有框架中的钩子方法调用音乐播放器应用程序中的函数(有关更多详细信息,请参阅此文章).

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

Eri*_*tro 2

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

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

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

然后您通过运行以下命令从外部注入该代码:

cycript -p Music /tmp/something.cy
Run Code Online (Sandbox Code Playgroud)

但是如果您需要以编程方式执行此操作,当然如果环境没有沙盒(我认为不是),那么您可以执行以下操作:

system("cycript -p Music /tmp/something.cy")
Run Code Online (Sandbox Code Playgroud)

这样您就可以在任何进程(在本例中为音乐应用程序)中从您的代码执行任意 ObjC 代码。

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