You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apple codesign生成的签名存储在哪里?为何签名后文件md5不变

macOS codesign 签名存储位置说明

Mach-O格式可执行文件(原生应用、命令行工具)

这类文件的签名会直接写入文件本身的__LINKEDIT段中:

  • Xcode或clang默认编译的Mach-O文件,会提前在__LINKEDIT段预留足够的空白区域存储签名数据。签名操作仅填充这段预留空白,不会修改原有代码、数据段内容,也不会改变文件总大小,因此签名前后全文件MD5哈希完全一致属于正常现象
  • 若编译时未预留签名空间,codesign会直接在Mach-O文件末尾追加签名数据,这种场景下签名前后文件哈希会发生变化

你可以执行otool -l <file> | grep -A 14 LC_CODE_SIGNATURE命令,查看签名段的偏移地址、大小等元信息。

非Mach-O格式文件(资源文件、Shell/Python等可执行脚本)

这类文件的签名不会写入文件本身,而是存储在文件的扩展属性(xattr)中,对应属性名包括com.apple.cs.CodeDirectory、com.apple.cs.CodeRequirements等:

  • 默认md5命令仅计算文件数据部分的哈希,不会读取扩展属性内容,因此签名前后哈希也不会发生变化
  • 执行xattr -l <file>命令即可查看文件上存储签名的所有扩展属性。

内容的提问来源于stack exchange,提问作者fhcat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 15:54:04