- 背景:作者正在撰写《Mac 恶意软件艺术》第二卷,其中涉及通过基于行为的启发式方法对 macOS 恶意软件代码进行编程检测。解析 Apple 二进制文件是一个深入且细致的话题,文中主要讨论了与解析通用二进制文件相关的基础 API 存在的问题。
- 解析二进制文件:Apple 设备使用的本机二进制格式是 Mach-O,通用二进制文件是多个架构特定的 Mach-O 二进制文件的容器。在检测恶意软件时,需要解析通用二进制文件并找到最兼容的 Mach-O 切片。Apple 提供了一些 API 来帮助找到相关切片,但最近的 macOS 版本中,
NXFindBestFatArch
API 被弃用,推荐使用macho_best_slice
,但该 API 存在问题。 - 找到最佳切片:传统上使用
NXFindBestFatArch
API 来找到最佳切片,但它已被弃用。macho_best_slice
API 看似是一个改进,但实际上存在问题,对于第三方二进制文件,它总是返回EBADARCH
错误,而对于 Apple 二进制文件则正常工作。通过反汇编macho_best_slice
的实现,发现其内部逻辑存在问题,导致无法正确识别兼容的切片。 - 结论:
macho_best_slice
API 存在根本缺陷,在恶意软件检测的背景下,这可能导致恶意二进制文件避免被扫描。安全工具依赖 macOS 的 API 来正确返回切片以扫描二进制文件中的恶意代码,因此 Apple 应该确保其代码首先能够正常工作。作者还提到可以通过 Patreon 页面支持他的研究和工具。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。