アプリのバイナリがあり、それが iOS 5.x、6.x、または 7.0 SDK に対してコンパイルされているかどうかを知りたいです。これを理解することは可能ですか?
質問する
691 次
1 に答える
5
IPA を抽出し、MachOViewを使用してバイナリ (Payload/appname.app/appname) を開きます。左側の開いている Load Commands -> LC_VERSION_MIN_IPHONEOS
右側には、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 に答える