相关疑难解决方法(0)

如何从目标文件中读取Mach-O头?

过去几天我一直在试验装配,现在了解装配和机器代码之间的关系(在OSX上通过NASM使用x86,阅读英特尔文档).

现在我试图了解链接器如何工作的细节,特别是想要了解Mach-O目标文件的结构,从Mach-O头开始.

我的问题是,你能否将下面的Mach-O标头映射到otool命令输出(显示标题,但它们的格式不同)?

这个问题的一些原因包括:

  • 它将帮助我了解"Mach-O标头结构"上的文档如何在真实世界的目标文件中查看.
  • 它将简化理解的道路,因此我和其他新人不必花费很多时间或几天想知道"他们是指这个还是这个 "类型的东西.如果没有以前的经验,很难将一般的Mach-O文档精神翻译成现实世界中的实际目标文件.

下面我展示了我尝试从真实对象文件解码Mach-O头的示例和过程.在下面的描述中,我试图显示出现的所有小/微妙问题的提示.希望这将提供一种对新手如此混淆的感觉.


从一个名为的基本C文件开始example.c:

#include <stdio.h>

int
main() {
  printf("hello world");
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

gcc example.c -o example.out它编译,它给出:

cffa edfe 0700 0001 0300 0080 0200 0000
1000 0000 1005 0000 8500 2000 0000 0000
1900 0000 4800 0000 5f5f 5041 4745 5a45
524f 0000 0000 0000 0000 0000 0000 0000
0000 0000 0100 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 …
Run Code Online (Sandbox Code Playgroud)

c macos executable

13
推荐指数
1
解决办法
6184
查看次数

标签 统计

c ×1

executable ×1

macos ×1