iOS越狱(iOS Jailbreak)概念
利用iOS系统的漏洞,获取iOS系统的最高权限(Root),解开之前的各种限制(合法行为)
iOS Jailbreak的优点
- 打造个性化、与众不同的iPhone,可以自由安装各种实用的插件、主题、APP;
- 自由安装非AppSore来源的APP
- 灵活管理文件系统,让iPhone可以像U盘那样灵活
- 给开发者提供了逆向工程的环境
iOS Jailbreak的缺点
- 不予保修
- 费电,越狱后的iOS系统会常驻一些进程,耗电速度约提升10%~20%
- 在新的iOS固件版本出来的时候,不能及时地进行更新,每个新版本的固件,都会修复上一个版本的越狱漏洞,使越狱失效
如果需要保持越狱状态,要等待新的越狱程序发布时,才能升级相应的固件版本 - 不再受iOS系统默认的安全保护,容易被恶意软件攻击,个人隐私有被窃取的风险
- 如果安装了不稳定的插件,容易让系统变得不稳定、变慢,甚至出现“白苹果”等问题
完美越狱和不完美越狱
- 完美越狱
越狱后的iPhone可以正常关机和重启 - 不完美越狱
- iPhone一旦关机后再开机时,屏幕就会一直停留在启动画面,也就是“白苹果”状态
- 或者能正常开机,但已经安装的破解软件都无法正常使用,需要将设备与PC连接后,使用软件进行引导才能使用
如何判断是否越狱成功?
- 桌面是否有Cydia
- 工具判断(比如PP助手、爱思助手)
- 代码判断
1、通过越狱后增加的越狱文件判断,一般来说,手机越狱后会增加以下文件/Applications/Cydia.app
、/Library/MobileSubstrate/MobileSubstrate.dylib
、/bin/bash
、/usr/sbin/sshd
、/etc/apt
,判断这些文件是否存在,只要有存在的,就可以认为手机已经越狱了+(BOOL)re_isJaibreak { NSArray*jailbreak_tool_paths = @[@"/Applications/Cydia.app",@"/Library/MobileSubstrate/MobileSubstrate.dylib",@"/bin/bash",@"/usr/sbin/sshd",@"/etc/apt"]; for (int i = 0; i<jailbreak_tool_paths.count; i++) { if ([[NSFileManager defaultManager] fileExistsAtPath:jailbreak_tool_paths[i]]) { return YES; } } return NO; }
2、根据是否能打开cydia判断
+ (BOOL)re_isJaibreak
{
if([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"cydia://"]]){
NSLog(@"The device is jail broken!");
return YES;
}
return NO;
}
3、根据是否能获取所有应用的名称判断,没有越狱的设备是没有读取所有应用名称的权限的。
+ (BOOL)re_isJaibreak
{
if([[NSFileManager defaultManager] fileExistsAtPath:@"User/Applications/"]){
NSArray*appList = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:@"User/Applications/" error:nil];
NSLog(@"appList = %@", appList);
return YES;
}
return NO;
}
4、根据读取的环境变量是否有值判断,DYLD_INSERT_LIBRARIES
环境变量在非越狱的设备上应该是空的,而越狱的设备基本上都会有Library/MobileSubstrate/MobileSubstrate.dylib
+ (BOOL)re_isJaibreak
{
char *env = getenv("DYLD_INSERT_LIBRARIES");
if(env) {
NSLog(@"The device is jail broken!");
return YES;
}
NSLog(@"The device is NOT jail broken!");
return NO;
}
5、根据使用stat方法来判断cydia是否存在来判断,这个方法的思路还是通过判定cydia应用,但方法是使用stat函数,同时会判断是否有注入动态库。
网友评论