12

Mach-O 実行可能ファイルを手書きしようとしています。次の 3 つのロード コマンドがあります。

  • 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 リファレンス」は明らかに欠落しています。)


これは、部分的に注釈が付けられたバイナリの 16 進ダンプです。

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
…
4

2 に答える 2