【发布时间】:2015-04-22 00:22:36
【问题描述】:
我使用 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
...
我打算在 Mac 上的 PPC 上运行二进制文件,因此需要重新编译;我已尝试删除最左侧列中的地址以使语法更像“AT&T”风格,留下它们等。我不想对现有代码结构进行任何编辑(这不完全是逆向工程,本身,只是一些定制)。但是,如果我必须进行任何编辑,我非常希望它能够严格地使 i386 的现有纯代码在 PPC 上运行。
非常感谢您的帮助。
问候
【问题讨论】:
-
您无法在 ppc 上本地运行 i386 代码。你需要一个模拟器。
-
"提示提示 -- 此代码执行处理器仿真"。我想知道这些汇编命令...“pushl”“movl”等是否可以在PPC上用正确的汇编程序形成一个可运行的文件。谢谢。
-
此外,它现在是 .s 文件的源代码。一切顺利。
-
不,每个架构的程序集都不同。仅仅因为它现在是一个文本文件,并不意味着它以任何方式与 ppc 兼容。 ppc 甚至没有
pushl或movl或 i386 的任何寄存器。 -
您在这里谈论的是仿真。模拟不是一件容易的事:)
标签: assembly disassembly i386 powerpc otool