iOS-可以判断应用二进制文件是针对哪个Base SDK编译的吗?

ede*_*y05 3 reverse-engineering ios

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

pan*_*k4j 5

提取IPA并使用MachOView打开二进制文件(Payload / appname.app / appname)。在左侧,打开“加载命令”-> 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 */
};
Run Code Online (Sandbox Code Playgroud)

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