没有main函数的iOS可执行文件

标签 ios objective-c reverse-engineering ida

我创建了一个测试应用程序,然后导出为 IPA 文件。我使用 IDA pro 查看可执行二进制文件。我发现main函数是由start subsroutine调用的:

BLX  _main

所以我得出结论,一个 mach-o 可执行文件的入口点是 start 子程序,它最终会调用 main 函数。

但是,当我尝试打开其他应用程序的可执行文件(我使用 Clutch 抓取的)时,我发现根本没有 _main 函数,而是类似 sub_2A4C 之类的东西。

我想知道为什么会有这样的差异?

最佳答案

你的结论不对。入口点确实是 st​​art 子例程,start 子例程最终会调用您代码中声明的 main 函数也是如此。但是,如果您在 Xcode build设置中的“部署后处理”选项和“剥离链接产品”选项中选择"is",您的符号将被 strip 化,因此您将不再将主函数视为 _main,而是被混淆,例如 sub_2A4C。

关于没有main函数的iOS可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15892395/

相关文章:

ios - 阴影在 "sibling" View 顶部不可见

javascript - 一般检查移动设备屏幕方向是否发生变化?

ios - 防止 NSString 的堆检查

wolfram-mathematica - 阅读已定义函数的代码(尤其是从 System` 上下文中)的最佳方法是什么?

ios - 如何在 iOS 中创建具有动态内容的 View ?

ios - 访问 UNNotificationRequest 对象的预定日期

python - 使用 NSStreams 在 iOS 上复制文件的问题

objective-c - 将NSString对象设置为nil是否有意义?

c - 使用 Ollydbg,谁能告诉我变量 "a"的地址是什么?

android - 解压aab resources.pb