我需要插入(调用我的函数而不是原始函数)一些 OS X 系统调用来克服一个闭源软件中的缺陷。
最好,得到的解决方案可以在 10.5(Leopard)和更新版本下工作,但如果论点足够强,我可能需要 10.6(Snow Leopard)。
最好是生成的解决方案是一个可执行文件,但我可能会选择一个脚本。
最好,即使在目标应用程序运行之后,所得到的解决方案也能够插入(“窃取向量”) ,但我可以接受一种必须在应用程序加载时注入自身的技术。
最好用 C 或 C++ 开发最终的解决方案,但我可以满足于 Objective-C 或其他东西。
到目前为止,我已经尝试过:
1) DTrace脚本,它教会了我很多东西,但是 D 语言的局限性(有限的流量控制等)使它成为我正在做的事情的主要痛苦,更不用说结果将是一个脚本,这不像我所追求的那样整洁和独立。
2) DYLD_INSERT_LIBRARIES插入,这在很多方面都很巧妙,但可能是由于命名空间扁平化(我不会假装深入理解这意味着什么),它可以很好地处理更简单的可执行文件,但是即使我构建了目标应用程序也会让我的目标应用程序窒息一个什么都不做的库,实际上不插入任何调用。
我最新的想法是尝试mach_star ( https://github.com/rentzsch/mach_star ),但我先在这里停下来,询问 Stack Overflow 社区,它总是比我知道的更多......
...接下来我应该看看除了 mach_star 之外的东西吗?