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

在OS X 10.13上签名旧Director projector:修改__LINKEDIT段

解决旧Director Projector的CodeSign问题:修复被附加资源破坏的Mach-O结构

问题背景

我最近碰到了个挺棘手的代码签名问题,对象是一款没法重新发布的旧Director projector——既拿不到原始源码,也找不到对应的Director软件来重新生成程序。

未签名时的运行情况特别奇怪:

  • 双击运行时,Finder会弹出「Where is...」窗口,询问嵌入资源的位置
  • 但直接在终端里运行Contents/MacOS下的二进制文件,手动解压末尾附加的归档后,程序就能正常启动

签名时遇到的错误

尝试用codesign签名时,直接抛出错误:

main executable failed strict validation

加上--no-strict选项后,又出现新的报错:

__LINKEDIT segment does not cover the end of the file

我推测是二进制文件末尾附加的资源归档破坏了Mach-O文件的结构,导致签名工具无法识别正确的文件边界。

已尝试的无效方案

  • 用macho_edit工具修改__LINKEDIT段,没有效果
  • 用jtool工具调整相关参数,也没能解决问题

问题更新与后续计划

  1. 更新1:调整__LINKEDIT段的File Size和VM Size后,签名还是失败,报错变成了:
    file not in an order that can be processed
    
  2. 更新2:参考PyInstaller的类似问题解决方案,发现需要同时修正两个关键部分:
    • __LINKEDIT段的相关参数
    • LC_SYMTAB中的字符串表大小
      接下来打算按照这个思路尝试修改,看看能不能完成签名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:31:32