作者:yueji0j1anke
首发于公号:剑客古月的安全屋
字数:1720
阅读时间: 5min
声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。合法渗透,本文章内容纯属虚构,如遇巧合,纯属意外
目录
-
前言
-
前置知识
-
开发环境搭建
-
实战
0x00 前言
本文介绍ios越狱插件tweak的开发
0x01 前置知识
1.tweak基本介绍
很早之前我们写过xposed的开发插件,对应来说,xposed原理是通过修改劫持手机init进程启动zygote进程对应的app_process可执行文件,从而先启动并替换成XposedBridged相关进程从而在相关进程内存中完成对功能点的hook。相当于在内存中开了一个小型虚拟机,所有的app相关机器码均在该虚拟机中编译解析。
那对应到我们这里tweak插件,原理没有那么复杂。Tweak是广泛被使用的越狱插件,通过创建dylib注入到宿主进程,从而完成各种hook操作
通常情况下,我们所说的越狱开发都指的是开发一个tweak
Tweak依赖于一个名叫CydiaSubstrate的动态库基板
2.详细原理
tweak实质上是ios平台的动态链接库
在ios平台上,有两种format的动态库->dylib 和 framework
目前来说,framework已经逐渐变成主流,而苹果官方也已经弃用了dylib库
tweak目前依赖的正是dylib库
3.发布方式
而对于tweak开发,目前有两种发布方式
1.越狱设备上安装deb2.直接把补丁打包成ipa文件
0x02 开发环境搭建
1.Theos
theos是被设计基于unix平台开发ios程序的集成开发环境
export THEOS=/opt/theos git clone --recursive https://github.com/theos/theos.git $THEOSbash -c "$(curl -fsSL https://raw.githubusercontent.com/theos/theos/master/bin/install-theos)"
配置环境变量即可
终端命令 nic.pl
,如果安装成功直接可以创建项目
注意这里
.m 使用c编写
.x oc
.xm oc++
.mm c++
2.reveal
该工具可以用于调试app任意界面
https://github.com/DeftMKJ/MKJRevealLoaderX
跟随的这个教程
当然你要直接配置的roothide环境我的建议是跟随这个
https://iosre.com/t/rootless%E8%B6%8A%E7%8B%B1%E5%90%8E%EF%BC%8Creveal%E5%A6%82%E4%BD%95%E6%89%8D%E8%83%BD%E6%9F%A5%E7%9C%8B%E5%88%86%E6%9E%90%E5%AE%89%E8%A3%85%E7%9A%84app%E7%9A%84ui%E5%91%A2%EF%BC%9F/24858/2我这里直接patch转换成功的
clone https://github.com/opa334/AltList./install_to_theos.shhttps://github.com/theos/sdks/releases/tag/master-146e41f
可能theos没配置相关包,所以需要自己去添加
git clone https://github.com/DargonLee/LookinRootless
rootless环境- 修改Tweak.x文件中的NSString* prefix = @"/var/containers/Bundle/Application/.jbroot-038CCAEDDB43FECE";为NSString* prefix = @"/var/jb";roothide环境- 修改Tweak.x文件中的NSString* prefix = @"/var/containers/Bundle/Application/.jbroot-038CCAEDDB43FECE";替换随机字符串038CCAEDDB43FECE- /var/containers/Bundle/Application/.jbroot-xxxxxxx把038CCAEDDB43FECE替换为xxxxxxx
随后make do编译一下把deb包通过文件管理器以sileo的方式打开即可
3.配置Idid
配置用来签名的ldid
brew install ldid
4.icdump
通过reveal等调试工具拿到目标类名之后,需要获取类中方法
这里推荐icdump,通过frida-ios-dump出来后的可执行文直接通过icdump拿到头文件
pip3 install icdump --trusted-host=mirrors.aliyun.compython3 dump.py -H ip -p 22 -u root -P alpine packagename随后直接在github下载icdump运行相关文件即可python /iCDump-main/bindings/python/tools/readobjc.py Soul_New -o headers.txt
0x03 实战
通过搭建上面开发环境和使用对应工具,现在得到如下头文件
找到对应要hook的类
((SOSquareTimelineTextView *)0x13a3b5d60)
编写对应脚本
#import <objc/NSObject.h>#import <Foundation/Foundation.h>#import <SpringBoard/SpringBoard.h>%hookSOSquareTimelineTextView- (NSObject*)initWithFrame:(structCGRect)arg2{returnnil;}%end%ctor{NSLog(@"ctor执行-------------");}%dtor{NSLog(@"dtor结束-------------");}
随后在当前目录下开始编译
makemake packagemake install
这里由于我是rootless环境,所以在makefile中加了如下配置
ROOTLESS = 1ifeq ($(ROOTLESS),1)THEOS_PACKAGE_SCHEME=rootlessendififeq ($(THEOS_PACKAGE_SCHEME), rootless)TARGET = iphone:clang:latest:15.0elseTARGET = iphone:clang:latest:12.0endif
随后安装好插件退出safemode模式
(如果是无限safemode模式,记得卸载之前的一些tweak插件,避免springboard崩溃)
可以看到成功hook
原文始发于微信公众号(剑客古月的安全屋):ios逆向开发-tweak插件编写指南
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论