gpt4 book ai didi

macos - 插入 OS X 系统调用

转载 作者:行者123 更新时间:2023-12-03 00:31:16 24 4
gpt4 key购买 nike

我需要插入(调用我的函数而不是原始函数)一些 OS X 系统调用来克服闭源软件中的缺陷。

最好,最终的解决方案可以在 10.5 (Leopard) 及更高版本下运行,但如果论证足够有力,我可能能够要求 10.6 (Snow Leopard)。

最好,最终的解决方案是一个可执行文件,但我可能会选择一个脚本。

最好,即使在目标应用程序运行之后,最终的解决方案也能够插入(“窃取向量”),但我可以满足于一种必须在应用程序运行时注入(inject)自身的技术正在加载。

最终的解决方案最好用 C 或 C++ 开发,但我可以选择 Objective-C 或其他东西。

到目前为止,我已经尝试过:

1)DTrace脚本,它教会了我很多东西,但是D语言的局限性(有限的流量控制等)使其成为一个主要的痛苦我正在做的事情,更不用说结果将是一个脚本,它不像我拍摄的那样整洁和独立。

2) DYLD_INSERT_LIBRARIES 插入,在很多方面都很巧妙,但也许是由于命名空间扁平化(我不会假装深刻理解这意味着什么),它对于更简单的可执行文件可以很好地工作,但即使我构建了一个实际上不插入任何调用的无所事事的库,也会使我的目标应用程序阻塞。

我最新的想法是尝试使用 ma​​ch_star ( https://github.com/rentzsch/mach_star ),但我首先停在这里,询问 Stack Overflow 社区,他们总是比我知道得更多......

...接下来我应该看看除了 mach_star 之外的其他东西吗?

最佳答案

我认为您在 mach_star 上做出了正确的选择。

如果您确实想了解 darwin 链接加载器的工作原理等,我会花更多时间研究您的 DYLD 插入问题。但显然您正在寻找快速解决方案,而不是深入的学习体验。我怀疑任何人都无法在无法访问您的项目的情况下解决您遇到的问题。所以,这很可能是一个死胡同。此外,Mach 覆盖和注入(inject)无论如何都更有趣。

马赫注入(inject)的基础知识实际上并不难,但是有很多事情你必须做对,其中大多数都没有很好的文档记录。在你得到可以在你的系统上运行的东西之前,你会犯 11 个问题,然后它就无法在你尝试的下一个函数中运行,然后它就无法在 10.5 或 10.8 上运行,并且...... mach_star 库为你包装了所有这些东西。那么,为什么不使用它呢?

我应该提到,自从英特尔出现之前我就没有使用过 mach_star。但看起来它仍在定期更新,包括 x86_64 和 10.7 以及 Xcode 4 等的更改。

关于macos - 插入 OS X 系统调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11526882/

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