我的编程空间,编程开发者的网络收藏夹
学习永远不晚

IOS - 越狱检测

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

IOS - 越狱检测

判断是否能打开越狱软件

利用URL Scheme来查看是否能够代开比如cydia这些越狱软件

    //Check cydia URL hook canOpenURL 来绕过    if([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"cydia://package/com.avl.com"]])    {        return YES;    }    if([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"cydia://package/com.example.package"]])    {        return YES;    }
 frida-trace -U -f 包名  -m  "+[NSURL URLWithString:]"

包名 可以用 frida-ps -Ua来查看, 然后更改生成的js路径脚本

 {    onEnter(log, args, state) {var URLName = ObjC.Object(args[2]);if(URLName.containsString_) {if(URLName.containsString_("http://") ||   URLName.containsString_("https://") ||   URLName.containsString_("file://")) {} else {if(URLName.containsString_("://")) {log(`+[NSURL URLWithString:]` + URLName);args[2] = ObjC.classes.NSString.stringWithString_("xxxxxx://");}}}  },    onLeave(log, retval, state) {  }}

判断是否可以访问一些越狱的文件

越狱后会产生额外的文件,通过判断是否存在这些文件来判断是否越狱了,可以用fopen和FileManager两个不同的方法去获取

BOOL fileExist(NSString* path){    NSFileManager *fileManager = [NSFileManager defaultManager];    BOOL isDirectory = NO;    if([fileManager fileExistsAtPath:path isDirectory:&isDirectory]){        return YES;    }    return NO;}BOOL directoryExist(NSString* path){    NSFileManager *fileManager = [NSFileManager defaultManager];    BOOL isDirectory = YES;    if([fileManager fileExistsAtPath:path isDirectory:&isDirectory]){        return YES;    }    return NO;}BOOL canOpen(NSString* path){    FILE *file = fopen([path UTF8String], "r");    if(file==nil){        return fileExist(path) || directoryExist(path);    }    fclose(file);    return YES;}
  NSArray* checks = [[NSArray alloc] initWithObjects:@"/Application/Cydia.app",                       @"/Library/MobileSubstrate/MobileSubstrate.dylib",                       @"/bin/bash",                       @"/usr/sbin/sshd",                       @"/etc/apt",                       @"/usr/bin/ssh",                       @"/private/var/lib/apt",                       @"/private/var/lib/cydia",                       @"/private/var/tmp/cydia.log",                       @"/Applications/WinterBoard.app",                       @"/var/lib/cydia",                       @"/private/etc/dpkg/origins/debian",                       @"/bin.sh",                       @"/private/etc/apt",                       @"/etc/ssh/sshd_config",                       @"/private/etc/ssh/sshd_config",                       @"/Applications/SBSetttings.app",                       @"/private/var/mobileLibrary/SBSettingsThemes/",                       @"/private/var/stash",                       @"/usr/libexec/sftp-server",                       @"/usr/libexec/cydia/",                       @"/usr/sbin/frida-server",                       @"/usr/bin/cycript",                       @"/usr/local/bin/cycript",                       @"/usr/lib/libcycript.dylib",                       @"/System/Library/LaunchDaemons/com.saurik.Cydia.Startup.plist",                       @"/System/Library/LaunchDaemons/com.ikey.bbot.plist",                       @"/Applications/FakeCarrier.app",                       @"/Library/MobileSubstrate/DynamicLibraries/Veency.plist",                       @"/Library/MobileSubstrate/DynamicLibraries/LiveClock.plist",                       @"/usr/libexec/ssh-keysign",                       @"/usr/libexec/sftp-server",                       @"/Applications/blackra1n.app",                       @"/Applications/IntelliScreen.app",                       @"/Applications/Snoop-itConfig.app"                       @"/var/lib/dpkg/info", nil];    //Check installed app    for(NSString* check in checks)    {        if(canOpen(check))        {            return YES;        }    }
 frida-trace -U -f 包名  -m  "-[NSFileManager fileExistsAtPath:]"
{    onEnter(log, args, state) {var fileName = ObjC.Object(args[2]);if(fileName.containsString_) {if(fileName.containsString_("apt") ||       fileName.containsString_("MobileSubstrate") ||       fileName.containsString_("Cydia") ||       fileName.containsString_("bash") ||       fileName.containsString_("ssh") ||   fileName.containsString_("/bin/sh") ||       fileName.containsString_("Applications") ||   fileName.containsString_("/bin/su") ||   fileName.containsString_("dpkg")     ) {console.log('fileExistsAtPath called from:\n' +Thread.backtrace(this.context, Backtracer.ACCURATE).map(DebugSymbol.fromAddress).join('\n') + '\n');   args[2] = ObjC.classes.NSString.stringWithString_("/xxxxxx");   log(`-[NSFileManager fileExistsAtPath: ${fileName}`);    }}//log(`-[NSFileManager fileExistsAtPath: ${fileName}`);  },    onLeave(log, retval, state) {  }}

关键词检测 :JailBroken 及 JailBreak 等;

使用frida脚本简单干掉:

在启动就注入进去, -f是通过spawn,也就是重启apk注入js

frida -U -f 包名 --no-pause -l 过越狱检测.js

//越狱检测- 简单先将返回1的Nop掉var resolver = new ApiResolver('objc');resolver.enumerateMatches('*[* *Jailb*]', {    onMatch: function (match) {        let funcName = match.name;        let funcAddr = match.address;        Interceptor.attach(ptr(funcAddr), {            onEnter: function (args) {            }, onLeave: function (retval) {                if (retval.toInt32() === 1) {                    retval.replace(0);                }                console.log(funcName, retval);            }        });    }, onComplete: function () {    }});resolver.enumerateMatches('*[* *JailB*]', {    onMatch: function (match) {        let funcName = match.name;        let funcAddr = match.address;        Interceptor.attach(ptr(funcAddr), {            onEnter: function (args) {            }, onLeave: function (retval) {                if (retval.toInt32() === 1) {                    retval.replace(0);                }                console.log(funcName, retval);            }        });    }, onComplete: function () {    }});resolver.enumerateMatches('*[* *jailB*]', {    onMatch: function (match) {        let funcName = match.name;        let funcAddr = match.address;        Interceptor.attach(ptr(funcAddr), {            onEnter: function (args) {            }, onLeave: function (retval) {                if (retval.toInt32() === 1) {                    retval.replace(0);                }                console.log(funcName, retval);            }        });    }, onComplete: function () {    }});

来源地址:https://blog.csdn.net/qq_41369057/article/details/131412976

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

IOS - 越狱检测

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

IOS - 越狱检测

判断是否能打开越狱软件 利用URL Scheme来查看是否能够代开比如cydia这些越狱软件 //Check cydia URL hook canOpenURL 来绕过 if([[UIApplication sharedApp
2023-08-16

iOS逆向:越狱及相关概念的介绍

在上一篇内容中我们介绍了App脱壳的技术,今天我们来介绍一个和iOS逆向密切相关的知识:越狱。 iOS操作系统的封闭性一直是开发者们关注的焦点之一。为了突破Apple的限制,越狱技术应运而生。本文将深入探讨iOS越狱,包括可越狱的版本对比、
2023-08-30

iOS 14.5.1 / 12.5.3 系统来了,越狱依然支持

在5月4日凌晨时段,苹果发布 iOS 14.5.1 系统版本,该版本为正式版,与上一个正式版相隔 七 天时间,更新包大小为:133.1MB,跨系统升级4.56GB,如果想升级,可在设置-通用-软件更新升级。

iOS判断是否越狱设备方法示例

前言 苹果是非常看重产品的安全性的,所以给用户设计了一套复杂的安全机制。这让喜爱自由,崇尚一切开放的程序员们极度不爽,于是越狱就成了苹果和黑客们反复斗法的场所。总体来说,越狱可以让我们随意安装、共享应用,但确实也降低了设备的安全性,会给一些
2022-06-01

苹果iOS系统修复了iPhone13越狱漏洞

在10月份的一场比赛上,黑客利用一个现已修复的iOS内核漏洞,只用了15秒就黑掉了最新、最受欢迎的iPhone 13 Pro。

黑客发布兼容苹果 iOS 15 和 iOS 16 的越狱工具

苹果公司一直在努力提高其操作系统和设备的安全性,黑客已经越来越难为 iOS 创建越狱工具。不过 palera1n 团队通过不懈努力,近日发布了一个越狱工具,不仅兼容 iOS 15,而且还兼容 iOS 16。

iOS 13.5 Blizzard 新越狱工具,内置斑马商店

在大家期待 iOS 13.5.1 至 13.6 系统越狱消息时,万万没想到,又有一款新的越狱工具出现,它叫做「Blizzard Jailbreak」越狱工具,而目前 iOS 13.5.1 至 13.6 内核漏洞还未公开分享。

ios不越狱可不可以直接安装ipa文件

这篇文章主要为大家展示了“ios不越狱可不可以直接安装ipa文件”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“ios不越狱可不可以直接安装ipa文件”这篇文章吧。“越狱”是ios用户经常会听到的
2023-06-03

越狱后的ios如何用apt-get 安装各种命令

越狱后的iOS系统可以通过安装和使用Cydia来使用apt-get命令来安装各种命令。以下是在越狱后的iOS系统上使用apt-get安装命令的步骤:1. 确保你的iOS设备已经越狱,并且已经安装了Cydia应用。2. 打开Cydia应用,点
2023-09-02

CoolStar正式推出Taurine工具 支持iOS 14全版本越狱

尽管 Unc0ver 已经实现了 iOS 14 的越狱,但我们还是很高兴能看到另一个替代选项。WCCFTech 指出,CoolStar 刚刚推出了面向 iOS 14 ~ iOS 14.3 全版本的 Taurine 越狱工具。此前,大家曾设想

iOS 14 越狱工具更新,SEP 漏洞开源降级有望?

大家期待 checkra1n 越狱工具终于更新了,这次发布 0.12.2 版本,依然支持 iPhone 6S 至 X 设备电脑引导越狱。

时隔6年 iOS 14首个完美越狱发布:支持iPhone 12

自iOS 9时代完美越狱后,这一成就就再也没有被黑客企及过,直到大神Linus Henze发布Fugu14。
iOS应用系统2024-12-02

苹果 iOS 15.2 修复远程越狱漏洞:黑客能 1 秒破解 iPhone

苹果近日推送了 iOS 15.2 正式版更新,带来了多项新增内容和 Bug 修复。据苹果越狱团队奇安盘古透露,苹果在 iOS 15.2 中还修复了一个远程越狱漏洞,该漏洞可一秒“远程越狱”iPhone。

超详细!iOS 11~14.3全系列越狱工具及傻瓜式教程发布

目前越狱后存在问题还是较多的,院长是不建议小白用户进行越狱的,万一越狱了万一遇到问题也不懂如何解决,虽然爱锋贝有越狱老司机,但是毕竟相隔千里,有些简单的问题在距离面前还是会变得很麻烦。小白用户还是老老实实用原生系统吧。

iOS WKWebview 白屏检测实现的示例

前言 自ios8推出wkwebview以来,极大改善了网页加载速度及内存泄漏问题,逐渐全面取代笨重的UIWebview。尽管高性能、高刷新的WKWebview在混合开发中大放异彩表现优异,但加载网页过程中出现异常白屏的现象却仍然屡见
2022-05-26

DECO: 纯卷积Query-Based检测器超越DETR!

本文旨在研究是否能够构建一种基于查询的端到端目标检测框架,而不采用复杂的Transformer架构。提出了一种名为Detection ConvNet(DECO)的新型检测框架,包括主干网络和卷积编码器-解码器结构。通过精心设计DECO编码器
端到端框架2024-11-30

iOS 12+ 中检测网络访问的方法

我最近写了一篇文章,来介绍 iOS 在连接新的 Wi-Fi 网络时,如何在弹出一个 web view 以让用户登录或注册之前,检测 Captive Portals (强制网络门户)。如果你连接过诸如酒店、酒吧或咖啡店等地的公共 Wi-Fi
2022-06-03

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录