在越狱的iOS设备上,一个应用程序是否可以从另一个应用程序(实例方法,而不是静态方法)调用方法?另一种表达方式:如何获取应用程序的实例(假设应用程序正在运行),以便我可以调用其中一种方法?
背景:我正试图通过iPodUI
私有框架中的钩子方法调用音乐播放器应用中的某个功能(有关详情,请参阅this post)。
此问题已被要求Android,但我没有找到任何适用于越狱iOS的内容。如果那是因为我问的是错误的问题并且采取了不同的方法,我会对此持开放态度。
答案 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
,因为您将不再需要它