本文參考http://www.2cto.com/Article/201303/197244.html
檢測裝置破解
裝置越獄其實是指使用者擷取了所有檔案的最高許可權,但是幾乎所有的越獄使用者都安裝了Cydia以安裝外掛程式和軟體,故判斷裝置是否越獄可根據apt路徑與Cydia.app路徑是否存在判斷。
/** * 判斷裝置是否越獄,判斷方法根據apt和Cydia.app的path來判斷 * return, Yes for jailbroken, No for not */- (BOOL)isJailbroken{ /* Cydia.app */ NSString *cydiaPath = @"/Applications/Cydia.app"; if ([[NSFileManager defaultManager] fileExistsAtPath:cydiaPath]) { return YES; } /* apt */ NSString *aptPath = @"/private/var/lib/apt/"; if ([[NSFileManager defaultManager] fileExistsAtPath:aptPath]) { return YES; } return NO;}
檢測應用破解 通過對比正版ipa檔案與破解的ipa檔案,發現破解後的主要區別有兩點: 1.SC_Info目錄被移除,該目錄包含兩個檔案: (1)appname.sinf為metadata檔案 (2)appname.supp為解密可執行檔的密鑰 2.iTunesMetadata.plist檔案被移除,該檔案用來記錄app的基本資料,例如購買者的appleID,app購買時間、app支援的裝置體繫結構,app的版本、app標識符
/** * 判斷你的App是否被破解 * return, Yes for 破解, No for not */- (BOOL)isPirated{ NSString * bundlePath = [[NSBundle mainBundle] bundlePath]; /* SC_Info */ if (![[NSFileManager defaultManager] fileExistsAtPath:[NSString stringWithFormat:@"%@/SC_Info", bundlePath]]) { return YES; } /* iTunesMetadata.plist */ if ([[NSFileManager defaultManager] fileExistsAtPath:[NSString stringWithFormat:@"%@/iTunesMetadata.plist", bundlePath]]) { return YES; } return NO;}