【问题标题】:What is the core Difference between Runtime Headers and just "Headers"?运行时标头与“标头”之间的核心区别是什么?
【发布时间】:2014-12-13 09:24:44
【问题描述】:

我正在对 iOS 进行新的调整。我抓住了 iOS Headers https://github.com/MP0w/iOS-Headers。 后来我在 Github 上发现了另一个名为 iOS Runtime Headers https://github.com/nst/iOS-Runtime-Headers的存储库

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

【问题讨论】:

  • 这些都是坏链接。
  • 我想通了并修复了链接。

标签: ios objective-c header cydia


【解决方案1】:

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

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

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

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

每组标头都可用于确定类的预期用途和非预期用途,了解其中的差异可以帮助您更清楚地了解所进行的逆向工程。

【讨论】:

    【解决方案2】:

    很难说有什么区别。它们都是使用运行时自省生成的标头集。第一个说它是公共和私有的标头。

    每个人都明白,这两个链接都指向一组标题,可让您访问私有操作系统 API。使用这些会让你被应用商店拒绝。它们仅在开发供开发者个人使用的应用程序或越狱开发时真正有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-04
      • 2014-10-17
      • 1970-01-01
      相关资源
      最近更新 更多