osx – Mac OS X应用程序可以防止dlopen加载库吗?

osx – Mac OS X应用程序可以防止dlopen加载库吗?,第1张

概述经过一些仔细的调试,我发现我的应用程序中出现了一个bug,这个错误植根于系统框架中,加载了一个错误的苹果软件包: /System/Library/CoreServices/MLTEFile.bundle 我有信心我没有从这个捆绑的服务中受益,并且怀疑许多应用程序.事实上,我通过学习Xcode本身了解到,该软件包无法加载到Xcode的内存空间,因为该软件包不兼容垃圾回收. 所以理想情况下,我想防止这 经过一些仔细的调试,我发现我的应用程序中出现了一个BUG,这个错误植根于系统框架中,加载了一个错误的苹果软件包:

/System/library/CoreServices/MLTEfile.bundle

我有信心我没有从这个捆绑的服务中受益,并且怀疑许多应用程序.事实上,我通过学习Xcode本身了解到,该软件包无法加载到Xcode的内存空间,因为该软件包不兼容垃圾回收.

所以理想情况下,我想防止这个软体包加载到我的应用程序中.这样做的一个方法是在我自己的应用程序中要求GC,但我不会这样做.任何人都可以想到一种方法来规避系统框架在这个库上调用dlopen()的尝试?

解决方法 感谢Twitter上的一些有用的回复,我可以在这里提供dyld的“插入”功能作为一个潜在的解决方案.搜索“在相关库中插入函数”:

https://developer.apple.com/library/mac/#documentation/DeveloperTools/Conceptual/DynamicLibraries/100-Articles/UsingDynamicLibraries.html#//apple_ref/doc/uid/TP40002182-SW10

这里的简单例子:

http://toves.freeshell.org/interpose/

还有一个用于在这里声明介绍的简化宏:

http://www.opensource.apple.com/source/dyld/dyld-97.1/include/mach-o/dyld-interposing.h

我对这里展示的各种方法感到困惑.看来,在DYLD名称表中有一种广告_interpose愿望的机制,一种依赖于使用dlsym(RTLD_NEXT,…)链接到原始的完全(?)不同的机制.在Apple的可下载示例(从第一个文档链接),他们使用dlsym技术,但是如果这隐含地导致插入发生,我不清楚.

总结

以上是内存溢出为你收集整理的osx – Mac OS X应用程序可以防止dlopen加载库吗?全部内容,希望文章能够帮你解决osx – Mac OS X应用程序可以防止dlopen加载库吗?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1018378.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存