在越狱的 iOS 设备上,一个应用程序是否可以调用另一个应用程序的方法(实例方法,而不是静态方法)?另一种表达方式:如何获取应用程序的实例(假设应用程序正在运行)以便我可以调用它的方法之一?
背景:我正在尝试从 iPodUI
私有(private)框架中的 Hook 方法调用音乐播放器应用程序中的函数(有关详细信息,请参阅 bài đăng này).
此问题已被问到 Android ,但我没有找到越狱 iOS 的任何内容。如果那是因为我问错了问题并且可以采取不同的方法,我对此持开放态度。
实现此目的的一种简单且替代的方法是使用 cycript 和 system() 调用,但是在使用它之前请注意使用 system() 的危险,因为它可能不安全(在我看来,这不是那么安全在越狱的 iOS 上很重要,那里的一切都非常不安全)
假设你有一个像 [[SomeClass sharedInstance] methodToBeCalledExternally]
这样的方法,你想从其他进程调用它
您可以将该调用保存到 /tmp/something.cy
中的文本文件中
然后您通过运行从外部注入(inject)该代码:
cycript -p Music /tmp/something.cy
但是如果您需要以编程方式执行此操作,当然如果环境不是沙盒(我假设不是),那么您可以这样做:
system("cycript -p Music /tmp/something.cy")
通过这种方式,您可以从您的代码在任何进程(在本例中为音乐应用程序)中执行任意 ObjC 代码。
最后,不要忘记删除文件 /tmp/something.cy
,因为您将不再需要它
Tôi là một lập trình viên xuất sắc, rất giỏi!