【问题标题】:Detect if iOS App is written in Swift检测 iOS App 是否是用 Swift 编写的
【发布时间】:2015-12-29 04:34:29
【问题描述】:

我正在开发一种工具,该工具试图在应用程序上转储越狱设备的标头类。 我正在使用Clutch,但有时离合器对一些较新的应用程序失败,我正在考虑集成一些除离合器之外的工具。 所以,我首先需要确定二进制文件是否是用 Swift 编写的,这样我才能切换到正确的工具来执行。

我的问题是, 有没有办法,比如命令工具来确定 iOS App Binary 是否是用 Swift 编写的? 与仅使用 Obj-C 相比,在 Swift 中构建二进制文件的方式真的有很大不同吗?

【问题讨论】:

  • 一些应用程序是用 swift 和 Objective-c 混合构建的。那你打算怎么办?
  • 您无权转储我编写的任何应用程序的头文件,并且在应用商店中。
  • 这是一个渗透测试工具,用于确定应用程序是否容易受到一些常见安全问题的影响。见 www.idbtool.com
  • 感谢 Nicolas,我认为我现在的首要任务是,只要我知道应用程序中是否使用 Swift 代码编写。

标签: ios objective-c swift jailbreak cydia


【解决方案1】:

在 .app 文件中有一个 _CodeSignature 文件夹。里面有一个 CodeResources 文件。如果您将其作为文本打开,您将看到它包含 Frameworks/libswiftCore.dylib

我相信这表明它是用 swift 构建的。

【讨论】:

  • 如果 iOS13 上,它不包含 Frameworks/libswiftCore.dylib
【解决方案2】:

您可以使用nm tool 打印应用符号表。如果您搜索swift,例如使用grep

nm YourApp | grep swift

它会打印出类似这样的东西(还有更多):

U __swift_FORCE_LOAD_$_swiftFoundation

对于 100% 的 Objective-C 应用程序,结果将为空。但是,您无法判断代码是否 100% Swift,因为对于混合 objc + swift 应用程序,结果将类似于 swift 应用程序。

【讨论】:

  • 我认为这是一个最合适的解决方案。谢谢亚当
猜你喜欢
  • 1970-01-01
  • 2023-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多