Theos-tweak工程

本文介绍如何使用Theos创建tweak工程,在越狱的iOS设备上实现屏幕弹框功能。涵盖准备工作、工程搭建步骤、Logos语法说明等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、查看《iOS逆向 开发工具》 Theos的使用方法做准备工作;
2、创建tweak工程,实现在屏幕上添加弹框(越狱手机);
3、Logos语法。
完成该工程,我们可以实现在任意地方添加我们想要的功能。任性,吼吼。

###一、给屏幕添加弹框
项目目录:/Users/yanghaibo/Documents/iOS逆向/Theos/

1、创建tweak工程,进入工程目录执行命令:

/opt/theos/bin/nic.pl  

会出现列表:

NIC 2.0 - New Instance Creator
------------------------------
  [1.] iphone/activator_event
  [2.] iphone/application_modern
  [3.] iphone/application_swift
  [4.] iphone/cydget
  [5.] iphone/flipswitch_switch
  [6.] iphone/framework
  [7.] iphone/ios7_notification_center_widget
  [8.] iphone/library
  [9.] iphone/notification_center_widget
  [10.] iphone/preference_bundle_modern
  [11.] iphone/tool
  [12.] iphone/tool_swift
  [13.] iphone/tweak
  [14.] iphone/xpc_service
Choose a Template (required):

2、选择13创建一个tweak工程;
3、输入tweak的工程名称Project Name: first
4、输入deb包的名字,Package Name: com.yahibo.first
5、输入tweak作者的名称,Author: yahibo
6、输入作用对象的bundle identifier: com.apple.springboard
7、安装完成后需要重启应用,以进程名表示 命令:使用空格
项目创建完成如下:

create.png

8、修改Tweak.xm文件

%hook SpringBoard

-(void)applicationDidFinishLaunching:(id)application{
    %orig;
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示" message:@"我来了,哈哈哈" delegate:nil cancelButtonTitle:@"不见" otherButtonTitles:@"好的", nil];
    [alert show];
}

%end

9、修改Makefile文件,指定设备IP,指定处理器架构,指定SDK版本,导入framework,多个framework 空格添加。

THEOS_DEVICE_IP = 192.168.0.105
ARCHS = armv7 arm64
TARGET = iphone:latest:8.0
	
include $(THEOS)/makefiles/common.mk

TWEAK_NAME = first
first_FILES = Tweak.xm
first_FRAMEWORKS = UIKit

include $(THEOS_MAKE_PATH)/tweak.mk

after-install::
	install.exec "killall -9 SpringBoard"

10、配置完后终端进入工程文件执行安装命令:

make package install

执行如下:

install.png

手机端显示如下:

iphone.png
以上大功告成,完成了锁屏状态下加弹框。

11、工程被打包到:./packages/com.yahibo.first_0.0.1-23+debug_iphoneos-arm.deb中,可使用dpkg 查看deb包信息:

dpkg -I ./packages/com.yahibo.first_0.0.1-23+debug_iphoneos-arm.deb

12、在Cydia应用中搜索syslogd to/var/log/syslog并安装;搜索Core Utilities并安装,安装后可以使用tail命令查看文件。
13、项目打包成一个.dylib动态库在越狱手机/Library/MobileSubstrate/DynamicLibraries/目录下。

修改内容需要清除包

make clean
rm -rf packages

重启SpringBoard杀死进程会自动重启

killall -9 SpringBoard

卸载动态库:

make package uninstall

###二、常用的Logos语法简介

1、%hook指定需要hook的类名,以%end结尾。

%hook SpringBoard

-(void)applicationDidFinishLaunching:(id)application{
    %orig;//执行原始操作
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示" message:@"我来了,哈哈哈" delegate:nil cancelButtonTitle:@"不见" otherButtonTitles:@"好的", nil];
    [alert show];
}

%end

示例代码为钩住SpringBoard类的applicationDidFinishLaunching函数,先执行原始操作,再显示弹框。

2、%log用来打印log的,将信息输入到syslog中,格式%log([(<type><expr>,...)])

%hook SpringBoard
-(void)applicationDidFinishLaunching:(id)application{
    %orig;//执行原始操作
    %log((NSString *)@"iOSRE",(NSString *)@"Debug");
}
%end

3、%orig执行被hook函数的原始代码,类似于super.method功能,如果去掉,原始代码不会执行。还可以使用该函数更改原始函数的参数:

%hook SBLockScreenDateViewController
-(void)setCustomSubtitleText:(id)arg1 withColor:(id)arg2{
    %orig(@"hello I am hibo",arg2);
}
%end

4、%group该指令用于%hook的分组,%group后边跟的是组名,%group也是必须以%end结尾,其中可以包含多个%hook

5、%init该指令用来初始化某个%group,一个group只有被初始化后才可生效,init必须在hook中进行执行。

6、%ctor tweak的构造器,用来初始化,如果不显式定义,Theos就会自动生成一个%ctor,并在其中调用%init(_ungrouped).如:%ctor { %init(_ungrouped)}

7、%new该指令用来给现有的class添加一个新的函数。与Runtime中的class_addMethod相同。

8、%c该指令用来获取一个类的名称,类似于objc_getClass

从越狱手机中我们可以拿到苹果设备的桌面程序SpringBoard.app,砸壳后获取到SpringBoard对应的头文件。根据头文件我们可以大致猜测到类及类方法的作用,因此使用以上方法,我们也可以更改其他一些显示,修改桌面时间文本、颜色、电池状态、电量,当然这些可能没有实用价值,我们只是通过这种方式来进一步了解逆向。
苹果设备桌面头文件

### Theos 安装指南 #### 准备工作 在越狱设备上安装 Theos 需要先完成一些基础准备工作。确保 Cydia 中已添加必要的源,例如 BigBoss 和 ModMyi[^1]。 #### 安装步骤 通过 SSH 连接到目标设备,并执行以下命令来下载和解压 Theos: ```bash wget https://github.com/theos/theos/archive/master.zip unzip master.zip mv theos-master /opt/theos rm master.zip ``` 上述操作会将 Theos 的最新版本克隆至 `/opt/theos` 文件夹中[^2]。 #### 设置环境变量 为了使 Theos 命令全局可用,需将其路径加入 `PATH` 环境变量。编辑 `.zshrc` 或 `.bash_profile` 文件(取决于使用的 Shell),并追加如下内容: ```bash export PATH=$PATH:/opt/theos/bin export THEOS=/opt/theos export SDK_VERSION=$(xcrun --sdk iphoneos --show-sdk-version) export TARGET=iphone:clang:$SDK_VERSION:latest ``` 保存更改后运行以下命令使其生效: ```bash source ~/.zshrc # 如果使用的是 Bash,则替换为 source ~/.bash_profile ``` #### 配置设备 IP 地址 如果计划远程调试或部署应用到实际设备上,需要设置 `THEOS_DEVICE_IP` 变量。此变量通常定义于项目的 Makefile 文件顶部,格式如下所示[^3]: ```makefile THEOS_DEVICE_IP = 192.168.x.x ``` 请根据实际情况调整具体的 IP 地址值。 #### 创建首个项目 利用 Theos 提供的新建脚本快速构建一个测试工程。假设我们希望制作一款简单的 Tweak 插件,可以按照下列方式初始化目录结构: ```bash cd ~/Desktop/ nic.pl ``` 按提示输入相关信息即可自动生成所需的模板文件。随后打开生成的 `Tweak.xm` 文件,在其中编写逻辑代码;比如展示一条警告框消息作为演示用途][^[^45]: ```objc #import <UIKit/UIKit.h> %hook UIApplication - (void)applicationDidFinishLaunching:(id)application { UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Hello" message:@"This is a test tweak!" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; [alertView show]; } %end ``` 最后记得修改对应的 Makefile 来适配当前开发需求。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值