我需要插入一些OS X系统调用(让我的函数被调用而不是原始函数)来克服一个闭源软件中的缺陷。
最好的解决方案是适用于10.5(Leopard)及更新版本,但如果理由足够强烈,我可能需要10.6(Snow Leopard)。
最好的解决方案是一个可执行文件,但我可以接受一个脚本。
最好的解决方案能够在目标应用程序运行后进行插入("窃取向量"),但我可以接受在应用程序加载时注入自身的技术。
最好的解决方案是使用C或C++开发,但我可以接受Objective-C或其他语言。
到目前为止,我已经尝试过:
1)DTrace脚本,这让我学到了很多,但D语言的限制(有限的流程控制等)使得它对我正在做的事情来说非常麻烦,更不用说结果是一个脚本,不如我所期望的那样整洁和自包含。
最好的解决方案是适用于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,我还应该看其他什么东西吗?