ios逆向开发-tweak插件编写指南

admin 2024年12月31日16:12:08评论4 views字数 2880阅读9分36秒阅读模式

作者: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没配置相关包,所以需要自己去添加

ios逆向开发-tweak插件编写指南
ios逆向开发-tweak插件编写指南
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
ios逆向开发-tweak插件编写指南

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 实战

通过搭建上面开发环境和使用对应工具,现在得到如下头文件

ios逆向开发-tweak插件编写指南

找到对应要hook的类

((SOSquareTimelineTextView *)0x13a3b5d60)
ios逆向开发-tweak插件编写指南

编写对应脚本

#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
ios逆向开发-tweak插件编写指南

随后安装好插件退出safemode模式

(如果是无限safemode模式,记得卸载之前的一些tweak插件,避免springboard崩溃)

可以看到成功hook

ios逆向开发-tweak插件编写指南

原文始发于微信公众号(剑客古月的安全屋):ios逆向开发-tweak插件编写指南

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年12月31日16:12:08
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   ios逆向开发-tweak插件编写指南https://cn-sec.com/archives/3575706.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息