IOS越狱--修复Cydia闪退(或打不开)的办法

最近又有不少小朋友问我,明明iPhone没重启,可Cydia老是闪退,搞的什么插件都装不了,但是原来的插件还都能用,就是Cydia打不开,一打开就闪退,都有想一怒之下重新入狱的冲动了,当然了,恢复越狱并不是不可以,但要看你是什么手机,如果是隐藏ID的游戏机,或者黑解过的卡贴机,尽量不要点击恢复越狱,除非你会绕ID或者能接受恢复越狱带来的各种问题。
一般情况下cydia不会闪退打不开,除非你安装了不适配的插件或者删除了必要依赖,才会有可能导致这种情况发生。
如果真的实在是打不开了,那么请往下看

下面介绍网上收集的几种办法修复
方法一:此方法需要你在闪退之前安装过 Filza 文件管理器
  1. 打开 Filza 文件管理器

路径:var/mobile/Library/Caches/com.saurik.Cydia

  1. 把com.saurik.Cydia内所有的文件删除

  2. 然后进入Cydia中删除之前添加的源或者插件
    在这里插入图片描述

方法二:提前安装了AFC2补丁

这款插件全名为:Apple File Conduit “2”,可用于在电脑上访问手机系统文件,也就是爱思助手-文件管理能看到越狱文件,而此插件是越狱必备安装的,一旦安装到未兼容插件导致越狱商店出问题,你可以在电脑上爱思助手-文件管理找到相对应文件解决修复。
在这里插入图片描述
连接手机以后找到最后引起cydia打不开的源或者插件,删除即可。
该插件的安装方法为
添加源:ichitaso.tk/apt,再搜索:Apple File Conduit,即可看到
在这里插入图片描述

方法三:安装Cydia Failsafe插件修复

此方法专门应对前两种方法所需的插件均没有安装的人,但是不一定保证成功

  1. 首先下载爱思助手,打开ssh客户端
    在这里插入图片描述
  2. 随后在点击「SSH 终端」就会跳出以下画面,
    在这里插入图片描述

如果是上面的界面,下面加粗的文字不用管,{如果不是上面的界面,按以下步骤操作,首先输入「su root」并按下Enter键,会跳出要你输入OpenSSH密码,预设密码都是「alpine」,如果你改过密码的话,就输入改过后的密码,输入完毕后在按下Enter键。(密码不显示出来是正常的)}

  1. 接下来可以通过指令来安装插件。

一行一行输入,输入完毕后在按下回车

apt-get install nano

nano /etc/apt/sources.list.d/cydia.list

deb https://repo.d4ni.nl/ ./

修改完成后,按下键盘上的「ctrl」+「x」输入「y」按下Enter键就可保存推出,继续输入以下指令

apt-get update

apt-get install nl.d4ni.cydiainstall

按下「y」键继续按下Enter键就可看到在安装插件,继续输入以下指令,最后一步运行后会重新载入主画面,修复插件就安装完成了。

su mobile

uicache

killall SpringBoard

不知道本篇文章有没有帮到你,本篇文章部分方法来源于网络,本人均经过测试,三种方式我都用过,都没问题,但是不保证每个人的设备方法都管用,因修改导致设备出现问题本人概不负责,若有疑问,可以添加本人微信vaintech来交流探讨,或者有其他的解决办法请在评论区留言,让更多的人看到,帮助更多的人🙏

其他方法

在这里插入图片描述

iOS越狱开发中,常用的Hook检测包括以下几种: 1. 检测当前进程是否被其他进程注入 ``` void anti_injection() { char path[1024]; int ret = proc_pidpath(getpid(), path, sizeof(path)); if (ret <= 0) { NSLog(@"anti_injection: proc_pidpath failed"); exit(1); } if (strstr(path, "/Library/MobileSubstrate") != NULL) { NSLog(@"anti_injection: MobileSubstrate detected"); exit(1); } if (strstr(path, "/Library/Frameworks/CydiaSubstrate.framework") != NULL) { NSLog(@"anti_injection: CydiaSubstrate detected"); exit(1); } } ``` 2. 检测是否被调试 ``` void anti_debugging() { int name[4]; struct kinfo_proc info; size_t info_size = sizeof(info); name[0] = CTL_KERN; name[1] = KERN_PROC; name[2] = KERN_PROC_PID; name[3] = getpid(); if (sysctl(name, 4, &info, &info_size, NULL, 0) == -1) { NSLog(@"anti_debugging: sysctl failed"); exit(1); } if (info.kp_proc.p_flag & P_TRACED) { NSLog(@"anti_debugging: traced"); exit(1); } } ``` 3. 检测是否被hook ``` void anti_hooking() { const char *functionName = "ptrace"; void *handle = dlopen("/usr/lib/libc.dylib", RTLD_GLOBAL | RTLD_NOW); if (handle == NULL) { NSLog(@"anti_hooking: dlopen failed"); exit(1); } void *ptrace_func = dlsym(handle, functionName); if (ptrace_func == NULL) { NSLog(@"anti_hooking: dlsym failed"); exit(1); } if (ptrace_func != (void *)&ptrace) { NSLog(@"anti_hooking: hook detected"); exit(1); } } ``` 4. 检测是否被注入Cycript等调试工具 ``` void anti_cycript() { char *cycript = strstr(getenv("DYLD_INSERT_LIBRARIES"), "cycript"); if (cycript != NULL) { NSLog(@"anti_cycript: cycript detected"); exit(1); } } ``` 此外,还可以在代码中添加闪退检测断点,当程序发生闪退时就可以打断点进行调试,例如: ``` void crash_handler(int signal) { signal(SIGTRAP, NULL); NSLog(@"crash_handler: signal=%d", signal); exit(1); } void set_crash_handler() { signal(SIGTRAP, crash_handler); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值