美文网首页
越狱检测的攻与防(1)

越狱检测的攻与防(1)

作者: 圈少 | 来源:发表于2016-08-04 15:02 被阅读0次

    在应用开发过程中,我们希望知道设备是否越狱,正以什么权限运行程序,好对应采取一些防御和安全提示措施。

    iOS7相比之前版本的系统而言,升级了沙盒机制,封锁了几乎全部应用沙盒可以共享数据的入口。即使在越狱情况下,限制也非常多,大大增加了应用层攻击难度。比如,在iOS7之前,我们可以尝试往沙盒外写文件判断是否越狱,但iOS7越狱后也无该权限,还使用老方法检测会导致误判。

    那么,到底应该如何检测越狱呢?攻击者又会如果攻破检测呢?本文就着重讨论一下越狱检测的攻与防。

    首先,你可以尝试使用NSFileManager判断设备是否安装了如下越狱常用工具:

    /Applications/Cydia.app

    /Library/MobileSubstrate/MobileSubstrate.dylib

    /bin/bash

    /usr/sbin/sshd

    /etc/apt

    但是不要写成BOOL开关方法,给攻击者直接锁定目标hook绕过的机会

    +(BOOL)isJailbroken{

    if([[NSFileManagerdefaultManager]fileExistsAtPath:@"/Applications/Cydia.app"]){

    returnYES;

    }}

    攻击者可能会改变这些工具的安装路径,躲过你的判断。

    那么,你可以尝试打开cydia应用注册的URL scheme:

    if([[UIApplicationsharedApplication]canOpenURL:[NSURLURLWithString:@"cydia://package/com.example.package"]]){

    NSLog(@"Device is jailbroken");

    }

    相关文章

      网友评论

          本文标题:越狱检测的攻与防(1)

          本文链接:https://www.haomeiwen.com/subject/dkwcsttx.html