iPhone是否越狱的检测方法
今天項目中要用到檢查iPhone是否越獄的方法。
Umeng統計的Mobclick.h里面已經包含了越獄檢測的代碼,可以直接使用
/*方法名:* isJailbroken*介紹:* 類方法,判斷設備是否越獄,判斷方法根據 apt和Cydia.app的path來判斷*參數說明:* 無* **/#pragma mark utils api // 類方法,判斷當前設備是否已經越獄 + (BOOL)isJailbroken; // 類方法,判斷你的App是否被破解 + (BOOL)isPirated;apt和Cydia的方式來進行判斷的,沒看見源碼
?
然后再介紹兩種方法來查看是否已經越獄,知其然知其所以然、、、
1. apt
- (BOOL) hasAPT
{
return [[NSFileManager defaultManager] fileExistsAtPath:@"/private/var/lib/apt/"];
}
2. system
- (BOOL) successCallSystem
{
return (system("ls") == 0) ? YES : NO;
}
3.
??static const char* jailbreak_apps[] =
????{ ????????"/Applications/Cydia.app", ????????"/Applications/limera1n.app", ????????"/Applications/greenpois0n.app", ????????"/Applications/blackra1n.app", ????????"/Applications/blacksn0w.app", ????????"/Applications/redsn0w.app", ????????"/Applications/Absinthe.app", ????????NULL, ????}; ????? ????- (BOOL) isJailBroken ????{ ????????// Now check for known jailbreak apps. If we encounter one, the device is jailbroken. ????????for (int i = 0; jailbreak_apps[i] != NULL; ++i) ????????{ ????????????if ([[NSFileManager defaultManager] fileExistsAtPath:[NSString stringWithUTF8String:jailbreak_apps[i]]]) ????????????{ ????????????????//NSLog(@"isjailbroken: %s", jailbreak_apps[i]); ????????????????return YES; ????????????} ????????} ????????? ????????// TODO: Add more checks? This is an arms-race we're bound to lose. ????????? ????????return NO; ????}?
@interface UIDevice (Helper) ?
- (BOOL)isJailbroken; ?
@end
@implementation UIDevice (Helper) ?
- (BOOL)isJailbroken { ?
? BOOL jailbroken = NO; ?
? NSString *cydiaPath = @"/Applications/Cydia.app"; ?
? NSString *aptPath = @"/private/var/lib/apt/"; ?
? if ([[NSFileManager defaultManager] fileExistsAtPath:cydiaPath]) { ?
? ? jailbroken = YES; ?
? } ?
? if ([[NSFileManager defaultManager] fileExistsAtPath:aptPath]) { ?
? ? jailbroken = YES; ?
? } ?
? return jailbroken; ?
} ?
@end
?
僅供參考、、、
?
轉載于:https://www.cnblogs.com/easonoutlook/archive/2012/08/31/2665169.html
總結
以上是生活随笔為你收集整理的iPhone是否越狱的检测方法的全部內容,希望文章能夠幫你解決所遇到的問題。