我想获取 mach-o 可执行文件的入口点地址。 我读过 otool(-l 选项)命令能够向我们展示 mach-o 入口点。 我试过了,但我没有看到入口点。我已经尝试过 32 位和 64 位可执行文件。 如果我打印 main 函数的地址,我会看到最后 3 位数字在两次执行之间是相同的。但我看到其他数字在变化......
尝试使用“料斗”应用程序。这对于显示 Mach-O 可执行文件的内容及其代码段非常有用。 https://www.hopperapp.com
otool
称它为“entryoff
”,大概是“入口偏移量”的缩写。例如,我在我的 M1(即 ARM)Mac 上编译了 curl 并运行了这个命令:
$ otool -l src/curl | grep entry
entryoff 83892
83892 是十六进制的 0x147b4。跑步
objdump -d --macho src/curl | less
并搜索“147b4”,我们找到
_main
函数:
_main:
1000147b4: ff 03 03 d1 sub sp, sp, #192
1000147b8: fd 7b 0b a9 stp x29, x30, [sp, #176]
1000147bc: fd c3 02 91 add x29, sp, #176
1000147c0: e8 03 01 aa mov x8, x1
[...]