3

アプリのバイナリがあり、それが iOS 5.x、6.x、または 7.0 SDK に対してコンパイルされているかどうかを知りたいです。これを理解することは可能ですか?

4

1 に答える 1

5

IPA を抽出し、MachOViewを使用してバイナリ (Payload/appname.app/appname) を開きます。左側の開いている Load Commands -> LC_VERSION_MIN_IPHONEOS MachOView

右側には、4 つのフィールドがあるはずです。

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 のバージョンをデコードします。

于 2014-01-14T03:26:53.243 に答える