iOS逆向入门:使用theos注入第三方依赖库

背景

theos是一个跨平台的软件开发框架,常用于管理,开发和部署iOS项目,同时也是开发iOS越狱插件的主要工具。和MonkeyDev不同的是,它不依赖于xcode,可以在多个操作系统上运行。一个完整的iOS越狱开发流程包括:越狱设备,砸壳App,分析controller,编写注入程序,打包并注入dylib,重签名应用运行等步骤。本文只总结了在获得砸壳app后,使用theos注入自己编写的依赖库的步骤。

执行环境:

  • pc:Apple M1 Pro
  • os: Sonoma 14.5

相关工具

  • otool:查看目标文件信息的工具,
    用来发现应用中使用到了哪些系统库,调用了其中哪些方法,使用了库中哪些对象及属性比如查看iOS的Mach-O格式的二进制文件的信息。
  • zsign:程序重签名工具。
  • theos:是一个跨平台构建系统,可用于做ios越狱插件的开发
  • insert_dylib:将动态库注入到二进制文件中的工具。
  • install_name_tool:修改应用程序对动态库的依赖路径。

安装依赖环境

  • 安装dpkg和ldid(theos依赖这两个库)

    brew install dpkg ldid
    
  • 安装theos

    export THEOS=/opt/theos
    git clone https://github.com/theos/theos $THEOS
    export PATH=$PATH:$THEOS/bin
    update-theos
    
  • 安装insert_dylib

    export INSERTLIB = /opt/insert_dylib
    git clone https://github.com/Tyilo/insert_dylib $INSERTLIB
    cd /opt/insert_dylib
    xcodebuild
    export PATH=$PATH:$INSERTLIB/build/Release/
    
  • 安装zsign
    参考:https://github.com/zhlynn/zsign

创建iphone/tweak项目

  1. 创建iphone/tweak项目
  2. 文件目录介绍
  • Makefile:工程用到的文件,框架,库等信息。可以置顶SDK版本,处理器架构等。(在此文件中加上我们需要注入的framwork,同时需要将对应的framework源码移入theos的lib目录中才能编译)

  • wechatinject.plist:制定bundle为tweak的作用对象,可指定多个。

  • control:tweak所需的基本信息。

  • Tweak.x:重要文件,用来编写hook代码。(.x 文件支持Logos语法,.xm 文件支持Logos和C/C++语法)。logos语法请参考:https://theos.dev/docs/logos-syntax

  1. 编译
    make clean
    make
    
    编译成功后,动态库位于~/.theos/obj/debug目录
  2. 替换libsubstrate.dylib
    非越狱手机中没有CydiaSubstrate库,手动替换。
    install_name_tool -change /Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate @loader_path/libsubstrate.dylib .theos/obj/debug/wechatinject.dylib
    

注入依赖库

  1. 注入libsubstrate库,这个库在非越狱手机中没有,需要手动将这个库打进ipa包中。
    libsubstrate库能够在程序运行时加载我们注入的动态库。

    git clone https://github.com/TKkk-iOSer/TKTweakDemo.git
    cp others/libsubstrate.dylib ~/Downloads/Payload/WeChat.app/
    
  2. 将我们编译的dylib库移动到ipa包中。

    cp .theos/obj/debug/wechatinject.dylib ~/Downloads/Payload/WeChat.app/
    
  3. 在WeChat库中执行注入,会得到WeChat_patched文件

    cd ~/Downloads/Payload/WeChat.app/
    insert_dylib @executable_path/wechatinject.dylib ~/Downloads/Payload/WeChat.app/WeChat
    

    替换wechat文件

    rm WeChat
    mv WeChat_patched WeChat
    
  4. 重签名
    zsign -f -k ~/Downloads/cert.p12 -p xxxxxx -m xxxxx.mobileprovision -o ~/Downloads/wechat2.ipa ~/Downloads/Payload

  5. 安装验证。

参考

https://github.com/TKkk-iOSer/TKTweakDemo

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/918162.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

从0开始学习机器学习--Day26--聚类算法

无监督学习(Unsupervised learning and introduction) 监督学习问题的样本 无监督学习样本 如图,可以看到两者的区别在于无监督学习的样本是没有标签的,换言之就是无监督学习不会赋予主观上的判断,需要算法自己去探寻区别,第二张…

【论文模型复现】深度学习、地质流体识别、交叉学科融合?什么情况,让我们来看看

文献:蓝茜茜,张逸伦,康志宏.基于深度学习的复杂储层流体性质测井识别——以车排子油田某井区为例[J].科学技术与工程,2020,20(29):11923-11930. 本文目录 一、前言二、文献阅读-基于深度学习的复杂储层流体性质测井识别2.1 摘要2.2 当前研究不足2.3 本文创新2.4 论文…

STM32设计防丢防摔智能行李箱

目录 目录 前言 一、本设计主要实现哪些很“开门”功能? 二、电路设计原理图 1.电路图采用Altium Designer进行设计: 2.实物展示图片 三、程序源代码设计 四、获取资料内容 前言 随着科技的不断发展,嵌入式系统、物联网技术、智能设备…

【IC每日一题:IC常用模块--RR/handshake/gray2bin】

IC每日一题:IC常用模块--RR/handshake/gray2bin 1 RR仲裁器2 异步握手信号处理3 格雷码和二进制相互转换 1 RR仲裁器 应用:在多个FIFO请求pop时存在仲裁策略,还有比如多master申请总线控制权的仲裁等这些应用场合;假如当前是最高…

从dos上传shell脚本文件到Linux、麒麟执行报错“/bin/bash^M:解释器错误:没有那个文件或目录”

[rootkylin tmp]#./online_update_wars-1.3.0.sh ba51:./online_update_wars-1.3.0.sh:/bin/bash^M:解释器错误:没有那个文件或目录 使用scp命令上传文件到麒麟系统,执行shell脚本时报错 “/bin/bash^M:解释器错误:没有那个文件或目录” 解决方法: 执行…

几何合理的分片段感知的3D分子生成 FragGen - 评测

FragGen 来源于 2024 年 3 月 25 日 预印本的文章,文章题目是 Deep Geometry Handling and Fragment-wise Molecular 3D Graph Generation, 作者是 Odin Zhang,侯廷军,浙江大学药学院。FragGen 是一个基于分子片段的 3D 分子生成模…

【不写for循环】玩玩行列

利用numpy的并行操作可以比纯用Python的list快很多,不仅如此,代码往往精简得多。 So, 这篇来讲讲进阶的广播和花哨索引操作,少写几个for循环()。 目录 一个二维的例题 一个三维的例题 解法一 解法二 更难的三维例题…

Spring纯注解开发

在我的另一篇文章中(初识Spring-CSDN博客),讲述了Bean,以及通过xml方式定义Bean。接下来将讲解通过注解的方法管理Bean。 我们在创建具体的类的时候,可以直接在类的上面标明“注解”,以此来声明类。 1. 常…

华为欧拉系统使用U盘制作引导安装华为欧拉操作系统

今天记录一下通过U盘来安装华为欧拉操作系统 华为欧拉操作系统是国产的一个类似于Centos的Linus系统 具体实现操作步骤: 先在官网下载欧拉系统镜像点击跳转到下载 准备好一个大于16g的U盘 ,用于制作U盘启动 下载一个引导程序制作工具,我使用…

PyCharm2024.2.4安装

一、官网下载 1.从下面的链接点进去 PyCharm: The Python IDE for data science and web development by JetBrains 2.进入官网后,下载pycharm安装包 3.点击下载能适配你系统的安装包 4.安装包下载完成 二、安装 1.下载完成后,打开点击右键&#xff…

定时器的小应用

第一个项目 第一步,RCC开启时钟,这个基本上每个代码都是第一步,不用多想,在这里打开时钟后,定时器的基准时钟和整个外设的工作时钟就都会同时打开了 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);第二步&…

基于YOLOv8深度学习的公共卫生防护口罩佩戴检测系统(PyQt5界面+数据集+训练代码)

在全球公共卫生事件频发的背景下,防护口罩佩戴检测成为保障公众健康和控制病毒传播的重要手段之一。特别是在人员密集的公共场所,例如医院、学校、公共交通工具等地,口罩的正确佩戴对降低病毒传播风险、保护易感人群、遏制疫情扩散有着至关重…

STM32保护内部FLASH

在实际发布的产品中,在STM32芯片的内部FLASH存储了控制程序,如果不作任何保护措施的话,可以使用下载器直接把内部FLASH的内容读取回来,得到bin或hex文件格式的代码拷贝,别有用心的厂商即可利用该代码文件山寨产品。为此…

前端 - 使用uniapp+vue搭建前端项目(app端)

文章目录 前提概要项目搭建1、打开HBuilder工具,选择文件->新建->项目2、下载依赖,需要先手动创建package.json文件,在自定义文件的最外层3、创建文件夹4、创建忽略文件 .gitignore5、创建vue.config.js文件 ,解决跨域问题&…

计算机网络HTTP——针对实习面试

目录 计算机网络HTTP什么是HTTP?HTTP和HTTPS有什么区别?分别说明HTTP/1.0、HTTP/2.0、HTTP/3.0请说明访问网页的全过程请说明HTTP常见的状态码Cookie和Session有什么区别?HTTP请求方式有哪些?请解释GET和POST的区别?HT…

飞创直线电机模组 VS 传统丝杆模组:谁是自动化传动领域的王者?

在现代自动化技术领域,直线电机模组与传统丝杆模组作为两种常见的传动方式,各自有独特的特点和优势。然而,随着科学的不断进步和应用需求的日益提高,两者在精度、速度、寿命及可拓展性方面的差异愈发显著。本文将重点对比飞创直线…

第二十一周学习周报

目录 摘要Abstract1. LSTM原理2. LSTM反向传播的数学推导3. LSTM模型训练实战总结 摘要 本周的学习内容是对LSTM相关内容的复习,LSTM被设计用来解决标准RNN在处理长序列数据时遇到的梯度消失和梯度爆炸问题。LSTM通过引入门控机制来控制信息的流动,从而…

《鸿蒙生态:开发者的机遇与挑战》

一、引言 在当今科技飞速发展的时代,操作系统作为连接硬件与软件的核心枢纽,其重要性不言而喻。鸿蒙系统的出现,为开发者带来了新的机遇与挑战。本文将从开发者的角度出发,阐述对鸿蒙生态的认知和了解,分析鸿蒙生态的…

Elasticsearch基本概念及使用

Elasticsearch 是一个开源的、分布式的全文搜索和分析引擎,基于 Apache Lucene 构建。它提供了快速的搜索能力,支持大规模的数据分析,广泛应用于日志分析、全文搜索、监控系统和商业智能等领域。ES操作指令是基于restAPI构建,也就…

常用命令之LinuxOracleHivePython

1. 用户改密 passwd app_adm chage -l app_adm passwd -x 90 app_adm -> 执行操作后,app_adm用户的密码时间改为90天有效期--查看该euser用户过期信息使用chage命令 --chage的参数包括 ---m 密码可更改的最小天数。为零时代表任何时候都可以更改密码。 ---M 密码…