【发布时间】:2016-07-01 05:34:31
【问题描述】:
我想获取 mach-o 可执行文件的入口点地址。 我已经读过 otool(-l 选项)命令能够向我们展示 mach-o 入口点。 我已经尝试过,但我没有看到入口点。我已经尝试过 32 位和 64 位可执行文件。 如果我打印主函数的地址,我看到最后 3 位数字在 2 次执行之间是相同的。但我看到其他数字在变化......
【问题讨论】:
-
当今的大多数二进制文件都在运行时重新定位,因此如果您在运行时检索地址,您将获得预期的结果。如果您正在执行静态操作,您可以在 Mach-O 标头中的
LC_MAIN命令的一部分中找到入口点以获取较新的文件(请参阅/usr/include/mach-o/loader.h,搜索LC_MAIN/struct entry_point_command),或者如果存在LC_UNIXTHREAD,则作为符号表中导出的start符号的地址。另见stackoverflow.com/a/14422570
标签: mach-o