前言
蘋果是非常看重產品的安全性的,所以給用戶設計了一套復雜的安全機制。這讓喜愛自由,崇尚一切開放的程序員們極度不爽,于是越獄就成了蘋果和黑客們反復斗法的場所。總體來說,越獄可以讓我們隨意安裝、共享應用,但確實也降低了設備的安全性,會給一些惡意應用提供方便之門。
有時我們的應用希望知道安裝的設備是否已經越獄了,顯然,蘋果官方不會給出解決方案來的,那么我們怎么辦呢?下面來一起看看詳細的介紹吧
越獄設備打印
(lldb) po [[NSFileManager defaultManager ] fileExistsAtPath:@"/Applications/Cydia.app"]
YES
(lldb) po [[NSFileManager defaultManager ] fileExistsAtPath:@"/private/var/lib/apt"]
YES
(lldb) po [[NSFileManager defaultManager ] fileExistsAtPath:@"/usr/lib/system/libsystem_kernel.dylib"]
NO
(lldb) po [[NSFileManager defaultManager ] fileExistsAtPath:@"Library/MobileSubstrate/MobileSubstrate.dylib"]
YES
(lldb) po [[NSFileManager defaultManager ] fileExistsAtPath:@"/etc/apt"]
YES
非越獄設備打印
(lldb) po [[NSFileManager defaultManager ] fileExistsAtPath:@"/Applications/Cydia.app"]
NO
(lldb) po [[NSFileManager defaultManager ] fileExistsAtPath:@"/private/var/lib/apt"]
NO
(lldb) po [[NSFileManager defaultManager ] fileExistsAtPath:@"/usr/lib/system/libsystem_kernel.dylib"]
YES
(lldb) po [[NSFileManager defaultManager ] fileExistsAtPath:@"Library/MobileSubstrate/MobileSubstrate.dylib"]
NO
(lldb) po [[NSFileManager defaultManager ] fileExistsAtPath:@"/etc/apt"]
NO
根據上面的打印結果可以看出要想判斷是否越獄 檢查如下路徑文件是否存在
1、"/Applications/Cydia.app" 存在 越獄
2、"/private/var/lib/apt" 存在 越獄
3、"/usr/lib/system/libsystem_kernel.dylib" 不存在 越獄
4、"Library/MobileSubstrate/MobileSubstrate.dylib" 存在 越獄
5、"/etc/apt" 存在 越獄
- (BOOL)isJailBreak{ __block BOOL jailBreak = NO; NSArray *array = @[@"/Applications/Cydia.app",@"/private/var/lib/apt",@"/usr/lib/system/libsystem_kernel.dylib",@"Library/MobileSubstrate/MobileSubstrate.dylib",@"/etc/apt"]; [array enumerateObjectsUsingBlock:^(NSString *obj, NSUInteger idx, BOOL * _Nonnull stop) { BOOL fileExist = [[NSFileManager defaultManager] fileExistsAtPath:obj]; if ([obj isEqualToString:@"/usr/lib/system/libsystem_kernel.dylib"]) { jailBreak |= !fileExist; }else{ jailBreak |= fileExist; } }]; return jailBreak;}
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。
新聞熱點
疑難解答