gpt4 book ai didi

ios - 我如何知道私有(private)框架方法的参数必须是哪种类型?

转载 作者:行者123 更新时间:2023-11-29 03:06:00 24 4
gpt4 key购买 nike

我目前正在使用私有(private)框架,主要是为了它。为了给它一点意义,我为自己设定了一个目标,即让铃声安装程序(就像 Garage Band 能够安装铃声一样)在未越狱的设备上工作。

所以我一直在浏览类转储,发现 ToneLibrary.framework 和 TLToneManager ( See classdump ) 看起来很有前途。在 TLToneManager 中,-(void)importTone:(id)arg1 metadata:(id)arg2 completionBlock:(/*^block*/id)arg3 看起来可能做我想做的事。

该方法期望 TLITunesTone 对象作为 arg1 似乎很明显,所以我创建了一个对象,使用我的应用程序包中的 m4r 文件对其进行了初始化并将其传入。这导致 'NSInvalidArgumentException',原因:'-[TLITunesTone writeToFile:atomically:]:无法识别的选择器发送到实例 0x15551770'。所以它期待其他东西 - 显然是实现 writeToFile:atomically: 的东西,可能是 NSData 或 NSDictionary。

在我继续盲目实验之前,我想知道 - 有没有一种方法(除了反复试验之外)来找出需要在私有(private)方法中传递什么类型的参数? (我确实意识到,即使我知道类型,我仍然可能缺乏所需内容的知识,例如字典)

谢谢!!

最佳答案

  1. 查找使用您感兴趣的 API 的应用程序/守护程序,并使用 CydiaSubstrate 或 theos/logos Hook 方法/函数调用。这样你就可以 NSLog 参数类型。
  2. 拆卸。您不会找到确切的参数类型,但可能会有一些线索,例如在参数上调用了哪些方法(例如 writeToFile:atomically: 在您的情况下),稍后传递参数的位置等。
  3. 查找使用 API 的其他人的代码。

就是这样。当然,您可以像以前那样猜测参数类型,但这可能需要更长的时间。在某些情况下,您不会那么幸运地获得异常(exception)。应用程序只会因段错误而崩溃,这几乎是无用的。即使是崩溃日志也可能不会为您提供太多信息。对于像 CoreTelephony API 或 C++ 类这样的 C 函数,这尤其困难。许多 API 需要指向 CoreFoundation 对象、C 结构和一些内部对象的指针。错误的论点 - 段错误。在这些情况下,只有反汇编才能帮助您。

关于ios - 我如何知道私有(private)框架方法的参数必须是哪种类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22765470/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com