【问题标题】:Mac load commands corruptionMac 加载命令损坏
【发布时间】:2014-03-20 08:24:17
【问题描述】:

在我们的一款应用上签名(代码设计)失败,malformed object (unknown load command 9)。在网上做了一些研究后,我发现加载命令是可执行文件头中的特殊命令,内核用于段加载(http://0xfe.blogspot.in/2006/03/how-os-x-executes-applications.html)。所以,我在我的应用程序上运行了otool -l 命令。我在哪里发现命令 30 已损坏。但是,启动应用程序绝对没问题。

我该如何解决这个问题?我不知道其他团队是如何构建该应用的。

otool -l 命令 sn -p

.
.
.
.

Load command 8
     cmd LC_UUID
 cmdsize 24
   uuid F892472C-7463-3549-8FA0-A93F4501FB40
Load command 9
      cmd ?(0x00000024) Unknown load command
  cmdsize 16
000a0600 00000000 
Load command 10
        cmd LC_UNIXTHREAD
    cmdsize 184
     flavor x86_THREAD_STATE64
      count x86_THREAD_STATE64_COUNT
   rax  0x0000000000000000 rbx 0x0000000000000000 rcx  0x0000000000000000
   rdx  0x0000000000000000 rdi 0x0000000000000000 rsi  0x0000000000000000
   rbp  0x0000000000000000 rsp 0x0000000000000000 r8   0x0000000000000000
    r9  0x0000000000000000 r10 0x0000000000000000 r11  0x0000000000000000
   r12  0x0000000000000000 r13 0x0000000000000000 r14  0x0000000000000000
   r15  0x0000000000000000 rip 0x0000000100001970
rflags  0x0000000000000000 cs  0x0000000000000000 fs   0x0000000000000000
    gs  0x0000000000000000

.
.
.
.
.
.
Load command 29
          cmd LC_LOAD_DYLIB
      cmdsize 88
         name /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit (offset 24)
   time stamp 2 Thu Jan  1 05:30:02 1970
      current version 1038.36.0
compatibility version 45.0.0
Load command 30
      cmd ?(0x00000026) Unknown load command
  cmdsize 16
001bd748 00000ef8 

【问题讨论】:

  • 您找到解决方案了吗?我认为该库已损坏并需要重建?
  • @JamesG 是的,你是对的。这需要时间,但我们重建了我们的图书馆。

标签: macos osx-snow-leopard code-signing


【解决方案1】:

@Gagandeep Singh 已经找到了解决方案,但对于遇到此问题的其他人:

当为一个 Mac OS X 版本构建对象,然后在较早的 Mac OS X 版本上使用时,可能会发生“未知加载命令”错误。

Mac OS X 10.6 引入了加载命令 LC_DYLD_INFO_ONLY (0×80000022)。要解决此问题,请参阅here

Mac OS X 10.7 引入了加载命令 LC_VERSION_MIN_MACOSX (0×80000024) 和 LC_FUNCTION_STARTS (0x80000026)。要解决这些问题,请参阅here

一个方便的加载命令名称列表位于mach-o/loader.h

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-01
  • 2017-05-13
  • 1970-01-01
  • 2012-06-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多