Cycript安装报错 Library not loaded终极解决方案

news/2024/9/17 19:06:47/ 标签: iOS, 越狱, cycript, Cycript

一、下载安装

Cycript 官方完整
资源下载完成后,解压。目录如下:

二、执行

打开命令终端,cd到对应目录,然后执行./cycript

#第一步:cd到解压的目录
cd /xx/cycrpt_0#执行:
./cycript
2.1、报错Library not Loaded

果然不出所料报错如下:

可以看到,Library not loaded 错误, ./cycript执行时,dyld加载libruby.2.0.0.dylib, 但找不到相应路径。查看自己电脑的ruby环境是,/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/libruby.2.6.dylib。怪不得。

那就想办法弄一个,网上找了很多方案,发现都是复制粘贴,由于苹果不同系统SIP的原因,并不能在系统文件夹里新建文件,因为只有只读权限。

在 OS X El Capitan 系统以后有一个跟安全相关的模式叫 SIP(System Integrity Protection ),它禁止让软件以 root 身份来在 Mac 上运行,在升级到 OS X 10.11 中或许你就会看到部分应用程序被禁用了,这些或许是你通过终端或者第三方软件源安装。对于大多数用户来说,这种安全设置很方便,但是也有些开发者或者高级 Mac 用户不需要这样的设置

网上说了很多关闭SIP,建立软链接,但都不起作用。既然都不靠谱,还是得自己再研究下。

2.2、分析原因

若不关注具体原因,可以直接跳过出,查看第三部分解决办法。

既然是dyld加载动态库时报错,谁用到了libruby.2.0.0.dylib,仔细看报错,可以看出:

可以看到是由于Cycript.lib下的cycript-apl,引用了。 那用otool 分析下,执行otool -l cycript-apl,

otool -l cycript-apl

从上图的输出可以看出,果然cycript-apl 加载了 libruby.2.0.0.dylib。说明cycript-apl是用到了libruby2.0.0.dylib提供的方法。

ruby是向后兼容的,2.6的版本提供的能力是大于2.0的。既然是加载动态库,那岂不是可以更改链接的动态库。

对,就是将动态库2.0的版本改动自己2.6的版本。

2.3、install_name_tool 改变dyld加载ruby的路径

1、通过install_name_tool 更改 cycript-apl 加载动态库的路径

install_name_tool -change  xxx旧ruby.dylib路径   xxx新ruby.dylib路径 cycript-apl

install_name_tool -change /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/libruby.2.0.0.dylib /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/libruby.2.6.dylib ~/Downloads/cycript_0/Cycript.lib/cycript-apl

install_name_tool -change /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/libruby.2.0.0.dylib /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/libruby.2.6.dylib ~/Downloads/cycript_0/Cycript.lib/cycript-apl

2、执行上述命令后,再次查看cycript-apl加载的动态库

#再次查看cycript-apl加载的动态库
otool -l cycript-apl

看到使用ruby.dylib已经更改为自己的了。

3、再次执行./cycript

还是报错Library not loaded,但仔细观察报错,会发现虽然还是libruby.2.0.0.dylib,但引用ruby.dylib的已经变成libcycript.dylib不是前面的cycript-apl。说明上面的更改加载动态路径是生效的。我想这个报错你应该会自己解决了。

对,同理通过install_name_tool,更改libcycrippt.dylib加载 ruby.dylib的路径。

install_name_tool -change /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/libruby.2.0.0.dylib /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/libruby.2.6.dylib ~/Downloads/cycript_0/Cycript.lib/libcycript.dylib 

install_name_tool -change /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/libruby.2.0.0.dylib /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/libruby.2.6.dylib ~/Downloads/cycript_0/Cycript.lib/libcycript.dylib
2.4、再次执行./cycript

执行./cycript成功了。

三、解决办法

3.1、 更改 cycript-apl加载ruby的路径

install_name_tool -change /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/libruby.2.0.0.dylib /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/libruby.2.6.dylib ~/Downloads/cycript_0/Cycript.lib/cycript-apl

install_name_tool -change /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/libruby.2.0.0.dylib /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/libruby.2.6.dylib ~/Downloads/cycript_0/Cycript.lib/cycript-apl
3.2、更改libcycript.dylib的加载ruby路径

install_name_tool -change /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/libruby.2.0.0.dylib /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/libruby.2.6.dylib ~/Downloads/cycript_0/Cycript.lib/libcycript.dylib 

install_name_tool -change /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/libruby.2.0.0.dylib /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/libruby.2.6.dylib ~/Downloads/cycript_0/Cycript.lib/libcycript.dylib 

install_name_tool -change  xxx旧ruby.dylib路径   xxx新ruby.dylib路径 需要更改的文件

注:上述的路径,请根据自己的路径进行修改。

3.3、再次执行./cycript

执行./cycript成功了。

​​​​​​​至此问题便解决了,请开心的使用cycript吧。


http://www.ppmy.cn/news/1507521.html

相关文章

【wsl】wsl + vscode 中使用 typora 打开 markdown 文件

vscode 连接好wsl 使用Open in External App 一个五星好评的插件Open in External App则可以在vscode中用typora打开md文件,不仅如此,还有设定其他应用打开相应的文件,比如chrome打开html。插件食用方法也比较简单,安装后&#…

前端已经学会vue,做粒子效果

目录 1. Canvas API 2. WebGL 3. 粒子系统 4. 动画与性能优化 5. 现有库和框架 6. Vue 组件和状态管理 实践项目建议 案例1 案例2雪花 已经熟悉了 Vue、TypeScript 和 JavaScript,下面是一些你可以学习的内容,以帮助你实现粒子效果的界面&#…

python async

要使用 Python 的 async 特性编写一个代码,以交替使用两个 AI API 处理数据,您可以按照以下步骤进行。假设这两个 AI API 的调用是异步的,并且我们需要在两个 API 之间轮流处理一组数据。 import asyncio import aiohttp async def call_ap…

处理Pandas中的JSON数据:从字符串到结构化分析

在数据科学领域,JSON作为一种灵活的数据交换格式,被广泛应用于存储和传输数据。然而,JSON数据的非结构化特性在进行数据分析时可能会带来一些挑战。本文将指导读者如何使用Pandas库将DataFrame中的JSON字符串列转换为结构化的表格数据&#x…

sql语句+mysql权限

sql语句 1.新增 2.删除 3.修改 4.查询 单表查询 select 字段名列表 from 表名,索引 聚合函数 只有 select ⼦句和 having ⼦句、order by ⼦句中能使⽤聚合函 数,where ⼦句不能使⽤聚合函数。当使⽤聚合查询以后,不能 使⽤where条件&a…

【mysql 第一篇章】系统和数据库的交互方法

一、宏观的查看系统怎么和数据库交互 在我们刚刚接触系统和数据库的时候不明白其中的原理,只知道系统和数据库是需要交互的。所以我们会理解成上图的形式。 二、MYSQL 驱动 随着我们的学习时间的加长以及对程序的了解,发现链接数据库是需要有别的工具辅…

乐凡三防平板:制造业移动作业平台的专业高效之选

在制造业数字化转型的浪潮中,移动作业平台成为了提升生产效率、优化管理流程的关键工具。其中,三防平板因其卓越的防护性能和高效的数据处理能力,正逐渐成为制造业移动作业的首选设备。本文将探讨三防平板如何为制造业带来专业高效的移动作业…

全新Bty分销系统源码v1.0/宝塔分销系统开源版源码/独立后台(附安装教程)

源码简介: 全新Bty分销系统源码v1.0,它作为宝塔分销系统开源版源码,功能强大,它内置了易支付功能,方便多了! 这个Bty分销系统开源版,宝塔分销系统开源版。它基于宝塔开放的API底层控制器&…

鸿蒙AI功能开发【hiai引擎框架-主体分割】 基础视觉服务

hiai引擎框架-主体分割 介绍 本示例展示了使用hiai引擎框架提供的主体分割能力。 本示例模拟了在应用里,选择一张图片,识别其图片中的显著性主体并展示出来主体的边界框的数据。 需要使用hiai引擎框架通用文字识别接口hms.ai.vision.subjectSegmenta…

Npm使用教程(详细讲解)

​ 大家好,我是程序员小羊! 前言 npm(Node Package Manager)是世界上最大的包管理器和软件注册表,专为 Node.js 生态系统设计。它是Node.js 的默认包管理工具,用于管理 JavaScript 项目的依赖项和包的安装、…

R 语言学习教程,从入门到精通,R 数据类型(6)

1、R 数据类型 数据类型指的是用于声明不同类型的变量或函数的一个广泛的系统。 变量的类型决定了变量存储占用的空间,以及如何解释存储的位模式。 R 语言中的最基本数据类型主要有三种: 数字 逻辑 文本 数字常量主要有两种: 逻辑类型在许多…

Python知识点:使用Transformers进行预训练语言模型应用

使用Transformers库(Hugging Face提供)进行预训练语言模型的应用涉及几个步骤:安装库、加载预训练模型、进行文本生成或分类任务。以下是一个详细的示例流程。 安装依赖 首先,确保你安装了Transformers和其他必要的库&#xff1…

从数据分析到智能生产:AI在工业中的应用与未来

导语 | 人工智能技术的迅猛发展,正在引领第四次工业革命悄然而至。尽管 AI 技术在工业领域的部署仍有诸多难题亟待解决,但这并不能阻挡历史趋势的车轮滚滚向前,AI 正在为工业领域带来新的变革。今天,我们特邀了上海腾展长融董事 &…

iOS ------ 事件响应链

响应者链 响应者链是由一系列链接在一起的响应者(UIResponser之类:UIApplication,UIViewController,UIView)注组成的。一般情况下,一条响应链开始于第一响应者,结束于application对象。如果一个…

【生成式人工智能-七-大型语言模型的可解释性】

大型语言模型的可解释性 语言模型是如何工作的1.把文字变成Token2.将Token表示成向量3.考虑上下文Attention4.编码器和解码器 语言模型无法解释体现在那些方面?语言模型通过什么方法可以获得解释性通过语言模型的神经网络进行分析找出哪些是影响输出的关键输入分析a…

某永PM2项目管理系统ExcelIn接口任意文件上传漏洞复现 [附POC]

文章目录 某永PM2项目管理系统ExcelIn接口任意文件上传漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现某永PM2项目管理系统ExcelIn接口任意文件上传漏洞复现 [附POC] 0x01 前言 免责声明:请勿利用文章内的相…

cpp笔记07:STL

STL 基本概念 STL(Standard Template Library,标准模板库) STL从广义上分为:容器(container)算法(algorithm)迭代器(iterator) 容器和算法之间通过迭代器…

Postgresql数据库密码忘记的解决方法

如果你忘记了PostgreSQL数据库的密码,可以通过以下方法重置密码: 方法一:修改 pg_hba.conf 文件 找到 pg_hba.conf 文件: 这个文件通常位于 PostgreSQL 数据目录中。你可以通过以下命令找到该文件的位置: 复制代码 …

【前端】NodeJS:NodeJS模块化

文章目录 1 NodeJS模块化1.1 模块化与模块1.2 模块化项目1.3 模块化好处 2 模块暴露数据2.1 模块初体验2.2 暴露数据 3 导入(引入)模块4 导入模块的基本流程5 CommonJS规范 1 NodeJS模块化 1.1 模块化与模块 将一个复杂的程序文件依据一定规则&#xf…

leetcode数论(836. 矩形重叠)

前言 经过前期的基础训练以及部分实战练习,粗略掌握了各种题型的解题思路。现阶段开始专项练习。 数论包含最大公约数(>2个数)、最大公约数性质、最小公倍数、区间范围质因素计数(最下间隔)、质因素分解、判断质数、平方根、立方根、互质、同余等等。 描述 矩…