与macOS的SIP较量的乐趣
内容提要
本文讲述了开发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的特权来运行。
延伸问答
什么是mirrord,它的主要功能是什么?
mirrord是一种工具,允许在云服务上下文中运行本地进程,从而缩短反馈周期并提高稳定性。
macOS的SIP是什么,它的作用是什么?
SIP(系统完整性保护)是Apple在2015年引入的安全功能,旨在防止对系统二进制文件的篡改,限制高权限操作。
如何检测一个二进制文件是否受SIP保护?
可以通过检查文件位置和RESTRICTED标志来检测二进制文件是否受SIP保护。
绕过SIP的常用方法是什么?
常用的方法包括将二进制文件复制到其他目录并重新签名,但在Apple Silicon上可能会遇到问题。
在Apple Silicon上处理arm64e二进制文件时遇到什么问题?
arm64e架构引入了指针认证,导致mirrord在编译和运行时遇到困难,且仅Apple签名的二进制文件可以运行。
mirrord如何集成到处理SIP保护的二进制文件中?
mirrord通过检测SIP、提取和签名x64二进制文件来集成,确保可以在受保护的环境中运行。