我创建了一个测试应用,然后导出为IPA文件。我使用IDA pro查看可执行二进制文件。我发现main函数是由start subsroutine调用的:
BLX _main
所以我得出结论,mach-o可执行文件的入口点是start子例程,最终调用main函数。
然而,当我尝试打开其他应用程序的可执行文件(我使用Clutch抓取)时,我发现根本没有_main函数,而是像sub_2A4C这样的东西。
我想知道为什么会有这样的差异?
答案 0 :(得分:0)
你的结论是不对的。确实,入口点是start子例程,start子例程最终调用代码中声明的main函数也是如此。但是,如果在Xcode构建设置中的“部署后处理”和“剥离链接产品”选项中选择“是”,则符号将被条带化,因此您不会再将主函数视为_main,而是将其视为sub_2A4C。 / p>