我正在尝试了解 Mach-o 文件的工作原理,并在可用的在线资源方面取得了很大进展(特别是这里的 Apple 页面:http: //developer.apple.com/library/mac/#documentation /developertools/conceptual/MachORuntime/Reference/reference.html),但我在理解符号存根如何工作方面遇到了障碍。
使用“otool -l”我看到以下部分:
Section
sectname __symbolstub1
segname __TEXT
addr 0x00005fc0
size 0x00000040
offset 20416
align 2^2 (4)
reloff 0
nreloc 0
flags 0x80000408
但是,当我在十六进制编辑器中查看二进制文件中的数据时,我看到以下 4 个字节一次又一次地重复:
00005FC0 38 F0 9F E5 38 F0 9F E5 38 F0 9F E5 38 F0 9F E5 88
00005FD0 38 F0 9F E5 38 F0 9F E5 38 F0 9F E5 38 F0 9F E5 88
00005FE0 38 F0 9F E5 38 F0 9F E5 38 F0 9F E5 38 F0 9F E5 88
00005FF0 38 F0 9F E5 38 F0 9F E5 38 F0 9F E5 38 F0 9F E5 88
这看起来有点像 LDR,它将 PC 增加了固定数量,但我不明白为什么符号表中每个条目的数量都相同。
如果有人可以解释为什么会这样,或者提供任何达到这个低水平的资源,请告诉我。
谢谢!