objective-c - 防止损坏的可执行文件在 OS X 上启动

标签 objective-c xcode macos security launchd

我有一个进程(Launch Daemon),它在 OS X 的根上下文中由 launchd 启动。该进程是代码签名的。如果我破坏了二进制文件,它仍然会再次加载。为了破坏二进制文件,我在十六进制编辑器中打开可执行文件,然后查找并替换任何字符串。有没有办法防止此进程在损坏时启动?

最佳答案

Apple 提供了一个 code signing framework这允许可执行文件检查自己的签名并测试应用程序是否已被篡改。

首先通过调用 SecCodeCopySelf 获取代码对象,然后使用检索到的 SecCodeRef 调用 SecCodeCheckValiditySecCodeCheckValidityWithErrors .

如果遇到有效性问题,是否退出取决于您的应用程序。由于它在根上下文中运行,它也可以从 launchd 中卸载自身。

请注意,验证应用程序所需的时间取决于其大小和文件数量。非常大的应用程序包(例如 XCode)可能需要大约 3 分钟,但小型应用程序几乎不会引起注意。

关于objective-c - 防止损坏的可执行文件在 OS X 上启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35860814/

相关文章:

objective-c - iOS 6 - 在没有 Default-568h@2x.png 的情况下处理 iPhone 5 屏幕尺寸

objective-c - Block 隐式保留 'self' ;明确提及 'self' 以表明这是预期行为

ios - 从 xcode 中的 mainBundle 获取子目录

objective-c - 将WKWebView嵌入YouTube

c# - unity c#运行shell脚本

iphone - 自动分页scrollview

c++ - 如何在 C++ 中使用 XCode 4.2 设置 OpenGL 项目?

ios - 如何快速显示事件指示器?

ios - 通过 Swift 中一个键的多个值过滤 Firebase 结果

objective-c - 使用 NSTextView 伪造 NSTextField 以获得漂亮的颜色?