我使用 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 上运行。
我将非常感谢您的帮助。
问候