ios - 运行时 header 和 "Headers"之间的核心区别是什么?

标签 ios objective-c header cydia

我正在对 iOS 进行新的调整。我捕获了 iOS header https://github.com/MP0w/iOS-Headers 。 后来我在 Github 上找到了另一个存储库,名为 iOS Runtime Headers https://github.com/nst/iOS-Runtime-Headers

现在我很困惑。这两者有什么区别?

最佳答案

header 有 3 个主要来源:来自代码开发人员、来自类转储和来自运行时 header 转储工具。

  1. Apple 或 SDK 开发人员将发布一个头文件,其中包含他们希望其他开发人员使用的公共(public)接口(interface)。它可能不包含一些他们不希望您看到的方法/变量声明。 Apple SDK 中的 UIView.h 就是一个很好的例子,说明他们隐藏了某些信息。

  2. 仅仅因为它们没有在头文件中包含这些方法,并不意味着这些类的实例无法响应它们。这就是像 class-dump 这样的工具的用武之地,它查看编译的 Mach-O 文件以确定该类包含哪些方法/ivars,并根据该结果生成 header 。

  3. 使用 Objective-C 的运行时功能,可以在运行时添加或删除全新的类、方法和 ivars。从其他 SDK/对象文件加载的类别之类的内容也不会出现在原始类的类转储中。由于这些原因,运行时转储工具可以查看这些类的实例在运行时实际可以响应的内容。

每组 header 可用于确定类的预期用途和非预期用途,了解其中的差异可以帮助您更清楚地了解逆向工程的内容。

关于ios - 运行时 header 和 "Headers"之间的核心区别是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27457376/

相关文章:

objective-c - objective-c : AES 256 Encryption with NSData Key

ios - 如何使用 ViewWillLayoutSubview 为 UIView 框架设置动画

ios - 用 AFNetworking 替换 NSURLConnection

ios - MapKit Overlays 消耗大量 CPU 资源

iphone - 画外音和触摸?

objective-c - 如何设计静态类?

Java动态列标题

java - 安卓NDK : Autogenerate function declarations?

html - header php 不完全到位

iphone - 应用程序打开时,系统是否可以删除 NSCachesDirectory 的内容?