iOS - 是否有可能告诉我们编译的应用程序二进制文件的Base SDK是什么?

时间:2013-11-12 16:22:25

标签: ios reverse-engineering

我有一个应用程序二进制文件,我想知道它是否是针对iOS 5.x,6.x或7.0 SDK编译的。有可能搞清楚这一点吗?

1 个答案:

答案 0 :(得分:4)

提取IPA并使用MachOView打开二进制文件(Payload / appname.app / appname)。在左边打开Load Commands - > LC_VERSION_MIN_IPHONEOS MachOView

在右边,应该有四个字段。

来自iPhone SDK中的usr / include / mach-o / loader.h,

/*
 * The version_min_command contains the min OS version on which this 
 * binary was built to run.
 */
struct version_min_command {
    uint32_t    cmd;            /* LC_VERSION_MIN_MACOSX or
                                   LC_VERSION_MIN_IPHONEOS  */
    uint32_t    cmdsize;        /* sizeof(struct min_version_command) */
    uint32_t    version;        /* X.Y.Z is encoded in nibbles xxxx.yy.zz */
    uint32_t    sdk;            /* X.Y.Z is encoded in nibbles xxxx.yy.zz */
};

此处的“版本”字段指定了应用所需的最低iOS版本。 “保留”字段指定编译应用程序的SDK。使用上述结构解码SDK版本。