iOS逆向:工具安装
二〇二三年〇八月二十三日(2023版,iOS逆向笔记)
对其他APP的实现感兴趣,对技术报以热枕,不去做违反职业道德和违法乱纪的事情,欢迎来到iOS逆向。
工欲善其事必先利其器 ------我说的。
网络不好可配置DNS 114.114.114.114
和 8.8.8.8
, 科学上网。
Mac端
安装Homebrew
安装homebrew
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
卸载homebrew
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"
- 查询已安装包列表:brew list
- 查看brew版本:brew -v
- 更新brew版本:brew update
安装Theos
Theos官网
安装
sudo git clone --recursive https://github.com/theos/theos.git /opt/theos
Theos 安装失败 可以按照Theos官网下载,下载完,要移动到 /opt/theos
下载Theos
bash -c "$(curl -fsSL https://raw.githubusercontent.com/theos/theos/master/bin/install-theos)"
下载失败
Error: Cannot download non-corrupt https://formulae.brew.sh/api/formula.jws.json!
先下载大文件
brew untap homebrew/core homebrew/cask
再次下载,安装完成
==> SDKs successfully installed!
==> Theos Installer: Theos has been successfully installed! Restart your shell and then run $THEOS/bin/nic.pl to get started.
找到theos文件夹,移动到 /opt/theos
修改文件权限
sudo chown $(id -u):$(id -g) /opt/theos
把theos的执行路径加入到环境变量之中
vim ~/.bash_profile
export THEOS=/opt/theos
export PATH=/opt/theos/bin/:$PATH
安装class-dump和ldid
brew install class-dump
brew install dpkg ldid
安装Frida
Frida官网
pip install frida-tools # CLI tools
pip install frida # Python bindings
安装frida-ios-dump
git clone https://github.com/AloneMonkey/frida-ios-dump.git
cd frida-ios-dump
sudo pip install -r requirements.txt --upgrade
安装MonkeyDev
MonkeyDev官方Wiki
选择 XCode
sudo xcode-select -s /Applications/Xcode.app
git clone https://github.com/AloneMonkey/MonkeyDev.git
cd MonkeyDev/bin
sudo ./md-install
使用过程中遇到的错误
报错 (Xcode13以后找不到这个目录了)
Modifying Bash personal initialization file...
File /Applications/Xcode.app/Contents/PlugIns/IDEiOSSupportCore.ideplugin/Contents/Resources/Embedded-Device.xcspec not found
创建目录
sudo mkdir -p /Applications/Xcode.app/Contents/PlugIns/IDEiOSSupportCore.ideplugin/Contents/Resources/
找到这个文件在哪 复制粘贴过去
find . -name Embedded-Device.xcspec
复制粘贴过去 再次安装
Xcode14.3找不到libarclite_iphoneos.a
ld: file not found: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/arc/libarclite_iphoneos.a
来到这个路径创建 arc
cd /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/
#执行第一个命令后需要输入Mac用户的登录密码以获取root权限
sudo mkdir arc
cd arc
sudo git clone https://github.com/kamyarelyasi/Libarclite-Files.gitsudo chmod +x *
重启Xcode
各种 No module named ‘’
ModuleNotFoundError: No module named 'frida'
找不到谁,就安装谁
pip install frida
安装iproxy
brew install libimobiledevice
安装Reveal
Reveal是ITTY BITTY发布的UI分析工具,可以很直观的查看App的UI布局。
支持正版,传递爱心
Reveal官网
穷人请点这里
Reveal-21-xclient.info.dmg
1、拖动Reveal.app到Applications目录完成安装;
2、打开Reveal20_Patcher.app,将应用程序目录内的Reveal.app拖到Reveal20_Patcher.app窗口内,然后打开Reveal.app输入任意序列号即可激活。
说你电脑端的 Reveal Library 与手机上的不一致,是旧版的,这个时候就需要将 MAC 端的 Reveal Library 覆盖一下手机上的,点击 Show Reveal Library in Finder
手机端
手机越狱
我用的是iPhone6 12.5.7。
你们可以先用爱思助手的一键越狱功能试试,我的手机是越狱失败了,各种尝试,最后问的爱思客服,最后采用了CheckRa1n 越狱,找个windows电脑端的爱思助手,制作U盘(对U盘还有要求,我换了三个才识别出来),然后作为启动U盘,对手机越狱成功。
iOS 12.3 - iOS 13.X:Windows 版 CheckRa1n 越狱教程
进入BIOS系统的按键。
我这样的是不完美越狱,不可以重启手机,可以重启SpringBoard
越狱这块,按照爱思助手的指导一步步来就可以了。
配置Cydia
这是我的软件源
这是我安装的插件
为什么安装这些,后面用到了再解释
相关文章:

iOS逆向:工具安装
二〇二三年〇八月二十三日(2023版,iOS逆向笔记) 对其他APP的实现感兴趣,对技术报以热枕,不去做违反职业道德和违法乱纪的事情,欢迎来到iOS逆向。 工欲善其事必先利其器 ------我说的。 网络不好可配置DNS 1…...

十种数据库缓存相关的技术和机制
数据库的缓存 -- 通过将数据库中的数据或结果集保存在内存或其他快速访问的介质中,能够加快查询响应,减少对磁盘或远程服务器的访问,降低资源消耗。 根据缓存的位置、内容、粒度、更新方式等不同,数据库缓存技术有多种类型和策略。…...

【C++】封装unordered_map和unordered_set(用哈希桶实现)
前言: 前面我们学习了unordered_map和unordered_set容器,比较了他们和map、set的查找效率,我们发现他们的效率比map、set高,进而我们研究他们的底层是由哈希实现。哈希是一种直接映射的方式,所以查找的效率很快…...
面试问题回忆
(1)查看端口 lsof -i:8080 / netstat lsof -i:8080:查看8080端口占用 lsof abc.txt:显示开启文件abc.txt的进程 lsof -c abc:显示abc进程现在打开的文件 lsof -c -p 1234:列出进程号为1234的进程所打开…...

更多场景、更多选择,Milvus 新消息队列 NATS 了解一下
在 Milvus 的云原生架构中,消息队列(Log Broker)可谓任重道远,它不仅要具备流式数据持久性、支持 TT 同步、事件通知等能力,还要确保工作节点从系统崩溃中恢复时增量数据的完整性。 在 Milvus 的架构中,一切…...

如何通过python实现一个web自动化测试框架?
要实现一个web自动化测试框架,可以使用Python中的Selenium库,它是最流行的Web应用程序测试框架之一。以下是一个基本的PythonSelenium测试框架的示例: 1、安装Selenium 在终端中输入以下命令,使用 pip 安装 Selenium:…...

Linux —— 信号阻塞
目录 一,信号内核表示 sigset_t sigprocmask sigpending 二,捕捉信号 sigaction 三,可重入函数 四,volatile 五,SIGCHLD 信号常见概念 实际执行信号的处理动作,称为信号递达Delivery;信…...

【【萌新编写riscV之计算机体系结构之CPU 总二】】
萌新编写riscV之计算机体系结构之CPU 总二(我水平太差总结不到位) 在学习完软件是如何使用之后 我们接下来要面对的问题是 整个程序是如何运转的这一基本逻辑 中央处理器(central processing unit,CPU)的任务就是负责提取程序指令࿰…...

error:03000086:digital envelope routines::initialization error
项目背景 前端vue项目启动突然报错error:03000086:digital envelope routines::initialization error 我用的开发工具是vscode,node版本是v18.17.0 前端项目版本如下↓ 具体报错如下↓ 报错原因 node版本过高 解决方法 1输入命令 $env:NODE_OPTIONS"--op…...

暴涨130万粉仅用3个月,一招转型成B站热门UP主
- 导语 起号难、找不到内容方向、没流量、没粉丝等等运营困境环绕在创作者之间,近期,有黑马UP主短时间内就在B站涨粉百万,飞升成为热门UP主,以下,飞瓜数据(B站版)剖析黑马UP主运营技巧…...
【Linus】vim的使用:命令模式、底行模式、插入模式、视图模式、替换模式的常用操作介绍
目录 注意:以下操作前提是要确保你输入法是英文模式 一、进入和退出各个模式的方法 1.命令模式 2.底行模式 3.插入模式 4.视图模式 5.替换模式 二、在命令模式中一些常用的操作 1.移动光标 2.删除文字 3.复制 4.替换 5.撤销上一次操作 6.更改 7.跳至指…...
leetcode第362场周赛补题
8029. 与车相交的点 - 力扣(LeetCode) 思路:差分数组 class Solution { public:int numberOfPoints(vector<vector<int>>& nums) {int diff[102] {}; for(auto p : nums)//差分{diff[p[0]] ;diff[p[1] 1] -- ;}int res …...

SpringMvc 之crud增删改查应用
目录 1.创建项目 2.配置文件 2.1pom.xml文件 2.2 web.xml文件 2.3 spring-context.xml 2.4 spring-mvc.xml 2.5 spring-MyBatis.xml 2.6 jdbc.properties 数据库 2.7 generatorConfig.xml 2.8 日志文件log4j2 3.后台代码 3.1 pageBean.java 3.2切面类 3.3 biz层…...

【业务功能109】微服务-springcloud-springboot-Skywalking-链路追踪-监控
Skywalking skywalking是一个apm系统,包含监控,追踪,并拥有故障诊断能力的 分布式系统 一、Skywalking介绍 1.什么是SkyWalking Skywalking是由国内开源爱好者吴晟开源并提交到Apache孵化器的产品,它同时吸收了Zipkin /Pinpoint …...

《向量数据库指南》——AI原生向量数据库Milvus Cloud 2.3架构升级
架构升级 GPU 支持 早在 Milvus 1.x 版本,我们就曾经支持过 GPU,但在 2.x 版本中由于切换成了分布式架构,同时出于对于成本方面的考虑,暂时未加入 GPU 支持。在 Milvus 2.0 发布后的一年多时间里,Milvus 社区对 GPU 的呼声越来越高,再加上 NVIDIA 工程师的大力配合——为…...
Flutter中实现交互式Webview的方法
前言: Flutter是一款强大的跨平台移动应用开发框架,而Webview则是在应用中展示Web内容的重要组件。本文将介绍如何在Flutter应用中实现交互式的Webview,以便为用户提供更加丰富的内容和功能。 1. 引入webview_flutter插件 要在Flutter应用中…...
【Java Web】用Redis优化登陆模块
使用Redis存储验证码 验证码需要频繁访问和封信,对性能要求高;验证码不需要永久保存,通常在很短时间内失效;分布式部署,存在Session共享问题; 使用Redis存储登陆凭证 处理每次请求时,都要查询用…...

华为云云耀云服务器L实例评测|docker私有仓库部署手册
【软件安装版本】【集群安装(是)(否)】 版本号 文档编写 文档审核 创建日期 修改日期 1.0 jzg jzg 2023.9.13 一. 部署规划与架构 1. 规划:(集群:网络规划&…...
JAVA-3DES对称加解密工具(不依赖第三方库)
import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec; import java.nio.charset.StandardCharsets; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException;public class EncryptUtil {// 密钥public static final String ENCR…...
基于Matlab卡尔曼滤波的IMU和GPS组合导航数据融合(附上源码+数据)
本文介绍了如何使用Matlab实现惯性测量单元(IMU)和全球定位系统(GPS)组合导航数据融合的卡尔曼滤波算法。通过将IMU和GPS的测量数据进行融合,可以提高导航系统的精度和鲁棒性。我们将详细介绍卡尔曼滤波的原理和实现步…...
JAVA后端开发——多租户
数据隔离是多租户系统中的核心概念,确保一个租户(在这个系统中可能是一个公司或一个独立的客户)的数据对其他租户是不可见的。在 RuoYi 框架(您当前项目所使用的基础框架)中,这通常是通过在数据表中增加一个…...
Qt 事件处理中 return 的深入解析
Qt 事件处理中 return 的深入解析 在 Qt 事件处理中,return 语句的使用是另一个关键概念,它与 event->accept()/event->ignore() 密切相关但作用不同。让我们详细分析一下它们之间的关系和工作原理。 核心区别:不同层级的事件处理 方…...

【C++】纯虚函数类外可以写实现吗?
1. 答案 先说答案,可以。 2.代码测试 .h头文件 #include <iostream> #include <string>// 抽象基类 class AbstractBase { public:AbstractBase() default;virtual ~AbstractBase() default; // 默认析构函数public:virtual int PureVirtualFunct…...

高端性能封装正在突破性能壁垒,其芯片集成技术助力人工智能革命。
2024 年,高端封装市场规模为 80 亿美元,预计到 2030 年将超过 280 亿美元,2024-2030 年复合年增长率为 23%。 细分到各个终端市场,最大的高端性能封装市场是“电信和基础设施”,2024 年该市场创造了超过 67% 的收入。…...

Copilot for Xcode (iOS的 AI辅助编程)
Copilot for Xcode 简介Copilot下载与安装 体验环境要求下载最新的安装包安装登录系统权限设置 AI辅助编程生成注释代码补全简单需求代码生成辅助编程行间代码生成注释联想 代码生成 总结 简介 尝试使用了Copilot,它能根据上下文补全代码,快速生成常用…...

【多线程初阶】单例模式 指令重排序问题
文章目录 1.单例模式1)饿汉模式2)懒汉模式①.单线程版本②.多线程版本 2.分析单例模式里的线程安全问题1)饿汉模式2)懒汉模式懒汉模式是如何出现线程安全问题的 3.解决问题进一步优化加锁导致的执行效率优化预防内存可见性问题 4.解决指令重排序问题 1.单例模式 单例模式确保某…...
AT模式下的全局锁冲突如何解决?
一、全局锁冲突解决方案 1. 业务层重试机制(推荐方案) Service public class OrderService {GlobalTransactionalRetryable(maxAttempts 3, backoff Backoff(delay 100))public void createOrder(OrderDTO order) {// 库存扣减(自动加全…...
Shell 解释器 bash 和 dash 区别
bash 和 dash 都是 Unix/Linux 系统中的 Shell 解释器,但它们在功能、语法和性能上有显著区别。以下是它们的详细对比: 1. 基本区别 特性bash (Bourne-Again SHell)dash (Debian Almquist SHell)来源G…...

多模态学习路线(2)——DL基础系列
目录 前言 一、归一化 1. Layer Normalization (LN) 2. Batch Normalization (BN) 3. Instance Normalization (IN) 4. Group Normalization (GN) 5. Root Mean Square Normalization(RMSNorm) 二、激活函数 1. Sigmoid激活函数(二分类&…...
LeetCode第244题_最短单词距离II
LeetCode第244题:最短单词距离II 问题描述 设计一个类,接收一个单词数组 wordsDict,并实现一个方法,该方法能够计算两个不同单词在该数组中出现位置的最短距离。 你需要实现一个 WordDistance 类: WordDistance(String[] word…...