【发布时间】:2013-08-21 18:12:12
【问题描述】:
有没有办法替换 Objective-C Foundation 函数的实现,例如 NSClassFromString 函数?我当然知道class_replaceMethod,但它似乎只适用于类方法而不是一般函数。
【问题讨论】:
-
其实不相关。
-
我认为this 是相关的,但是?
-
您可以使用
dyld加载包含库函数的替代实现的库我相信。试试man dyld。如果你想变得更复杂,你也许可以动态找到原始实现的函数指针,这样你就可以tail/head调用它。 -
我想如果您处于完全黑客模式,您可以使用机器指令覆盖已安装的系统功能,以跳转到您正在替换的功能的实现。您还需要在其他地方复制被替换函数的指令,修复它的跳转等,并在替换函数运行之前/之后调用该副本......但这听起来很复杂。 (虽然开发一个实现类似补丁的库可能很酷,即en.wikipedia.org/wiki/Application_Enhancer)
标签: objective-c