小编wir*_*yre的帖子

加载Mach-O可执行文件需要什么?

我试图手写一个Mach-O可执行文件.有三个加载命令:

  • LC_SEGMENT_64 装载 __PAGEZERO
  • LC_SEGMENT_64装载__TEXT,单个__text部分
  • LC_UNIXTHREAD 适当的设置 rip

每个命令都匹配结构mach/loader.h和相关标头.otool -l按预期列出信息,不报告任何错误.从各方面来看,它是一个格式良好的目标文件 - 但OS X 10.10.5终止了任务(SIGKILL).

在OS X加载之前,会检查Mach-O可执行文件的哪些功能?这些信息在哪里?这些功能是否会将版本更改为版本?(经常引用的"OS X ABI Mach-O参考"显然是缺失的.)


这是二进制文件的部分注释hexdump.

otool 理智检查(摘录):

$ otool -l machtest
machtest:
Load command 0
      cmd LC_SEGMENT_64
  cmdsize 72
  segname __PAGEZERO
…
Load command 1
      cmd LC_SEGMENT_64
  cmdsize 152
  segname __TEXT
…
Section
  sectname __text
   segname __TEXT
…
Load command 2
        cmd LC_UNIXTHREAD
…
Run Code Online (Sandbox Code Playgroud)

mach-o xnu

7
推荐指数
1
解决办法
1295
查看次数

标签 统计

mach-o ×1

xnu ×1