与macOS的SIP较量的乐趣

💡 原文英文,约2000词,阅读约需8分钟。
📝

内容提要

本文讲述了开发mirrord时在macOS的SIP方面遇到的挑战以及如何克服这些挑战。文章介绍了如何检测受SIP保护的二进制文件,以及如何绕过SIP加载mirrord。作者还讨论了在Apple Silicon上处理arm64e二进制文件的问题,并提供了解决方案。绕过SIP不会影响授予的特权。

🎯

关键要点

  • 开发mirrord时遇到macOS的SIP(系统完整性保护)挑战。

  • mirrord允许在云服务上下文中运行本地进程,缩短反馈周期。

  • SIP旨在防止对系统二进制文件的篡改,限制DYLD_INSERT_LIBRARIES的使用。

  • 检测二进制文件是否受SIP保护的方法包括检查文件位置和RESTRICTED标志。

  • 需要处理shebang文件的情况,以确保正确检测SIP保护。

  • 绕过SIP的方法包括复制二进制文件到其他目录并重新签名,但在Apple Silicon上存在问题。

  • arm64e架构引入了指针认证,导致mirrord在编译和运行时遇到困难。

  • 尝试将arm64e ABI转换为arm64 ABI的方案未能成功。

  • Apple提供的fat binaries包含不同架构的二进制文件,可以提取x64二进制文件进行重新签名。

  • 集成到mirrord的步骤包括检测SIP、提取和签名x64二进制文件。

  • 绕过SIP的机制不会影响授予的特权,mirrord不需要Apple的特权来运行。

➡️

继续阅读