Apple 組み込みの「otool」コマンドと「-Vvtd」スイッチを使用して、Mach-O i386 バイナリをダンプし、.s ファイルにリダイレクトしました。nasm および GAS アセンブラを使用して PPC マシンでコードを再コンパイルしようとしましたが失敗しました (gcc/darwin の i386 ディレクトリに "as"-binary があり、ppc ディレクトリにも "as"-binary があります)。出力は次のようになります。
some_topmost_label:
(__TEXT,__text) section
_default_pager:
00112000 pushl %ebp
00112001 movl %esp,%ebp
00112003 pushl %edi
00112004 pushl %esi
00112005 pushl %ebx
00112006 subl $0x3c,%esp
00112009 movl _default_pager_internal_count,%ebx
0011200f addl _default_pager_external_count,%ebx
00112015 leal 0x00000004(,%ebx,4),%ebx
次のようなデータセクションもあります。
...
(__DATA,__data) section
00421000 02 00 00 00 04 00 00 00 00 40 00 00 28 64 65 66
...
00449bc0 50 00 3d 00 00 00 00 00 00 00 00 00 00 00 00 00
00449bd0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
...
私は PPC 上の Mac でバイナリを実行するつもりであるため、再コンパイルの作業が必要です。構文をより「AT&T」スタイルにするために、左端の列のアドレスを削除したり、残したりしようとしました。既存のコード構造を編集したくありません (これは厳密にはリバース エンジニアリングの取り組みではありません。それ自体は、ほんの一部のカスタマイズです)。ただし、編集を行う必要がある場合は、i386 用の既存の純粋なコードをそのまま PPC で実行するためだけに厳密に編集することを強く望んでいます。
私はあなたの助けに感謝します。
よろしく