swift - 检测应用程序是否在 macOS 测试版上运行
问题描述
我希望能够以某种方式检测我的应用程序是否在 macOS 11 的 beta 版本上运行,因为我想告知用户一些已知的错误。我只想向 macOS 11 beta 用户显示这样的警报,这意味着既不是 macOS 10.15 用户也不是 macOS 11 最终版本的用户。我当然可以提交一个应用程序更新以在 macOS 11 接近完成时删除警报,但如果有一些可重复使用的东西我可以在多个应用程序和未来的 macOS beta 版本中使用,那就太好了。
约束:
- 该应用程序是沙盒的。
- 该应用程序位于 App Store 中,因此没有私有 API。
- 该应用程序没有网络权限,因此检测需要离线。
- 我不想捆绑已知 macOS 内部版本号的列表并进行比较。
我的想法是,也许可以使用某种嗅探。当 macOS 版本是 beta 版本时,可能有一些 API 会返回不同的结果。
解决方案
我相信你运气不好。About This Mac使用PrivateFrameworks/Seeding.framework,这里是重要的反汇编:
/* @class SDBuildInfo */
+(char)currentBuildIsSeed {
return 0x0;
}
所以这似乎是一个构建时编译器标志。不幸的是,框架中的 plist 不包含此标志。
私有 API 使用示例:kaloprominat/currentBuildIsSeed.py
对于疯狂的人:可以读取二进制文件并比较函数的程序集。我将从类转储代码开始,它会为您提供不同的胖二进制文件和函数偏移量。
推荐阅读
- python - 无法通过简单数学问题的单元测试
- javascript - 使用三个 js 渲染 3D 文件
- python - 为什么所有这些小数都带有 sympy.solve?
- python - 即使在 odoo 中创建记录后,列表视图仍为空白
- apache-flink - 如何配置 Apache Flink 的 StreamingFileSink 以使用水印来滚动正在进行的文件?
- python - 在网格网格上快速插入图像
- javascript - 如何使用 D3.js 对地图(层次结构)进行排序
- javascript - 在 Suitescript 2.0 中使用新项目创建销售订单
- shell - 如何编写 shell 脚本来运行 Makefile?
- php - 如何检查 WPCF7_Submission 中的 WPCF7 字段是否为空?