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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/494722.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里、字节offer收割系列:数据仓库岗(面试真题,建议收藏)

【offer收割系列介绍】 1、分享桥哥本人或小伙伴在面试大厂时遇到的真题,并给出参考答案!! 2、涉及岗位:主要为大数据开发、数据仓库(桥哥干过的),其它岗位也可参考 3、涵盖技术:mys…

MIT新开发的 AI 模型有望改进恶性脑瘤治疗

来源:人工智能和大数据美国研究人员新近开发出一种人工智能模型,能够为胶质母细胞瘤患者设计出最小剂量给药方案,在缩小肿瘤的同时减少药物带来的毒副作用,改进患者生活质量。胶质母细胞瘤是一种常见的恶性脑瘤,常见疗…

git远程分支修改名字

本地分支重命名(还没有推送到远程) git branch -m oldName newName远程分支重命名 重命名远程分支对应的本地分支 git branch -m oldName newName删除远程分支 git push --delete origin oldName上传新命名的本地分支 git push origin newName把修改后的本地分支与远程分支关联…

30款顶级CSS工具及应用-CSDN.NET

30款顶级CSS工具及应用-CSDN.NET. 第3个CSS3PS尤其令惊艳!!!非常强大的效果,无需安装,直接photoshop弄好,文件——脚本——选择pscss3——再用chrome打开即可! 转载于:https://www.cnblogs.com…

建议收藏丨大数据集群常用监控命令(内存、磁盘、CPU、网络)

大家好,我是明月十四桥!! 擅长领域:python黑科技、大数据后端研发、数据仓库 今日重点: ① 学会查看linux各种状态,包括:网络IO、磁盘、CPU、内存等; ② 学会理解命令所代表的含义&a…

中科院王飞跃:新的智能全球化将要来临,人工智能标准化为时尚早

中国科学院自动化研究所复杂系统管理与控制国家重点实验室主任王飞跃来源:财经网摘要:8月11日,中国科学院自动化研究所复杂系统管理与控制国家重点实验室主任王飞跃在由厚益控股和《财经》杂志联合主办主题为“共享全球智慧 引领未来科技”的…

Linux设置gopath

vim /etc/profile #编辑gopath,写入如下export GOROOT/usr/local/go #设置为go安装的路径,有些安装包会自动设置默认的goroot export GOPATH$HOME/gocode #默认安装包的路径 可以加自己想要的路径,用:分割 export PATH$PATH:$GOROOT/bi…

建议收藏丨sql行转列的一千种写法!!

大家好,我是明月十四桥!! 爱好特长: 1、爱好和特长有很多,擅长word、excel、ppt、wind等软件的安装与卸载; 2、精通PE、PS、PB、DCF、PEG等单词的拼写; 3、熟悉Windows、Linux、Mac、Android、I…

ORA-32004问题解决

问题描述: JSSSTR> startup force nomount;ORA-32004: obsolete and/or deprecated parameter(s) specifiedORACLE 例程已经启动 解决方法: 通过查看alter.log,并删除相应的值 上面提到的alert log文件位于%ORACLE_BASE%\admin\%ORACLE_SID%\bdump里。…

深度学习并非万能:你需要避免这三个坑

作者 | George Seif编译 | 专知整理 | Mandy, Sanglei摘要:本文是人工智能专家George Seif撰写的博文,介绍了在当前深度学习比较火热的情景下需要避免的三个坑。Tweaking Neural Net ParametersThree reasons that you should NOT use deep learning深度…

Redis配置文件常用配置消息解说--版本5.0.9

单位 配置文件中的uint单位对大小写不敏感 引用包 INCLUDES redis中也可以引用其他的配置文件。需要注意的是,在主从复制机制中,主机或哨兵的命令“CONFIG REWRITE”不会重写“include”选项。Redis总是使用最后处理的行作为配置指令的值,…

万字长文丨7个经典问题,助你拿下Java面试(建议收藏)

擅长领域:execl、word、ppt 等 今日重点: ① 掌握面试的基本素质; ② 学会7个典型的java面试问题。 有问题的小伙伴欢迎加我主页vx。评论、点赞、收藏是对我最大的支持!!! 目录 一、面试的目的 二、面…

剑指 Offer 09. 用两个栈实现队列(相邻相同操作只需要移动一次)

题目 用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 ) 示例 1: 输入: …

应用人工智能有助心理学发展

来源: 中国社会科学报摘要:人工智能及相关技术的发展,为心理学研究提供了突破性的研究方法和工具;心理学对大脑机制的研究成果运用于人工智能领域,也推动着人工智能研究的进步。心理学同人工智能联系紧密,自…

【粉丝福利、免费领取】:1000套PPT模板、100份简历模板、硬核学习资料+PDF资料(java、python、大数据、机器学习)

目录 1、100套小编购买的简历模板(部分截图) 2、1000套精品PPT模板(部分截图) 3、大数据-学习资料(1.3G 硬核PDF,官方指南) 4、python学习全集 5、Java基础、高级和面试资料 6、大数据-行…

HDU 1142 A Walk Through the Forest dijkstra + DFS

http://acm.hdu.edu.cn/showproblem.php?pid1142 题意: Jimmy在位置 1 ,每天晚上要回位置2(家),计算1到2的最短距离,Jimmy要先去一个地方然后再回家,到了那个地方离家的距离不能大于1到2 的最短…

剑指 Offer 06. 从尾到头打印链表(递归、逆置链表、头部动态插入)

题目 输入一个链表的头节点&#xff0c;从尾到头反过来返回每个节点的值&#xff08;用数组返回&#xff09;。 示例 1&#xff1a; 输入&#xff1a;head [1,3,2] 输出&#xff1a;[2,3,1] 限制&#xff1a; 0 < 链表长度 < 10000 解法一&#xff1a;递归&#xff0…

王家耀院士 | 新型智慧城市“大脑”就是时空大数据平台

来源&#xff1a;泰伯网摘要&#xff1a;新型智慧城市建设的任务包括五点&#xff0c;首先是大力实施“互联网城市”行动&#xff1b;二要加强体制机制创新和城市资源整合&#xff1b;三要推进工业化、信息化、城镇化、农业现代化融合创新&#xff1b;四要着力解决“城市病”&a…

网站架构之缓存应用(摘录)

网站缓存这个话题并不新颖&#xff0c;但是能否将它用好&#xff0c;可是一门学问&#xff0c;同一件工具在不同人的手中会做出不同的事情来。这里我来分享总结下我对于网站架构中缓存应用的一些看法和经验&#xff0c;大家有好的想法可以补充 第一&#xff1a;缓存的一些基…

C++校招常见面试题(2019年校招总结)

总结了语法、数据结构、常见排序算法、操作系统、网络五大块常见校招面试题。欢迎补充与修正。 ★★语法知识★★ 一、C与C的区别 面向对象与面向过程的区别 面向过程 面向过程编程是就分析出解决问题题的步骤&#xff0c;然后把这些步骤一步一步的实现&#xff0c;使用的时…