检测iOS App是否是用Swift编写的

时间:2015-10-01 07:51:34

标签: ios objective-c swift jailbreak cydia

我开发了一个工具,试图在App上转储越狱设备的头类。 我正在使用Clutch,但有时Clutch无法使用一些较新的应用程序,我想要集成除Clutch之外的其他工具。 因此,我首先需要确定二进制文件是否是用Swift编写的,这样我就可以切换到正确的工具来执行。

我的问题是, 有没有办法,比如判断iOS App二进制文件是否是用Swift编写的命令工具? 当Swift与Obj-C相比时,二进制文件的构建方式确实存在很大差异吗?

2 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分:7)

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

nm YourApp | grep swift

它会打印出这样的东西(以及更多):

U __swift_FORCE_LOAD_$_swiftFoundation

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