在反编译 iOS 应用程序时,所有函数名称和对象名称都是可见的。为什么 ?
我的猜测是,在构建期间,编译器会保留函数名称,以允许链接器完成其工作。但是一旦链接器完成,为什么不删除函数名称?
在反编译 iOS 应用程序时,所有函数名称和对象名称都是可见的。为什么 ?
我的猜测是,在构建期间,编译器会保留函数名称,以允许链接器完成其工作。但是一旦链接器完成,为什么不删除函数名称?
简短回答:没有人愿意实施这样的事情。/bin/strip当内存是一种宝贵的资源时开发的,它增加了调试的挑战。
我最好的猜测原因: 在ObjectiveC(和swift)中,函数被对象调用,它们以一种动态调度的方式相互发送消息。
这意味着当您在对象上调用方法时,您将要调用该方法的对象的标识符和方法本身发送到调度函数(例如objc_msgsend)。我最好的猜测是剥离符号会使这个过程复杂化。
参考资料:https : //blog.zynamics.com/2010/04/27/objective-c-reversing-i/