theos是iOS系统越狱插件开发的集成环境。在mac电脑中安装配置好theos后,就可以根据需求通过theos创建相应的插件工程对iOS app进行hook。
一、theos安装及环境配置
二、创建插件工程测试
这里以创建一个hook iOS设备中的桌面程序SpringBoard为例,在终端输入如下命令
选择 10 按回车键后,创建tweak工程,用于hook iOS app。
工程开始创建,要求我们填入要创建的插件工程的项目名,这里填写 iosregreetings,如下图所示(项目名可以根据需要任意填)
填写插件工程的包名,这里填写 com.test.iosregreetings,如下图所示(包名也可以根据需要任意填)
填写插件工程的作者名,这里填写testTheos,如下图所示(作者名也可以根据需要任意填)
填写插件工程要hook的iOS app的Bundle identifier,我们要hook的iOS app是SpringBoard,它的Bundle identifier是 com.apple.springboard,因此这里填写的Bundle identifier是 com.apple.springboard,如下图所示(具体要hook哪个iOS app就填写对应的Bundle identifier)
填写插件工程要hook的iOS app的进程名字,如下图所示(填写进程名字目的是为了当我们要hook的时候,先杀掉它,让它重新启动后能够调用到我们hook的函数,达到我们要的目的)
最后,成功创建了一个插件工程,如下图所示(接下去就可以根据我们需要开始编写插件代码,代码可直接在Tweak.x中编写,或者新建一个src目录,将代码文件放入其中)
如我们要hook SpringBoard,让它弹出一个窗口,以及打印出日志,则在Tweak.x中写入我们的hook代码如下所示
#import <UIKit/UIKit.h>
%hook SpringBoard
-(void)applicationDidFinishLaunching:(id)application{
%orig;
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"welcome" message:@"hellowrold" delegate:nil cancelButtonTitle:@"thanks" otherButtonTitles:nil];
[alert show];
[alert release];
NSLog(@"SpringBoard is hooked");
}
%end
写完代码后,则需要修改一下目录中的Makefile配置文件,填写我们iOS设备的IP、port,引用的FRAMEWORKS及代码文件名称,如下所示
THEOS_DEVICE_IP = 127.0.0.1
THEOS_DEVICE_PORT = 2222
ARCHS = armv7 arm64
TARGET = iphone:latest:8.0
include $(THEOS)/makefiles/common.mk
TWEAK_NAME = iOSREGreetings
iOSREGreetings_FILES = Tweak.xm
iOSREGreetings_FRAMEWORKS = UIKit
include $(THEOS_MAKE_PATH)/tweak.mk
after-install::
install.exec "killall -9 SpringBoard"
配置完Makefile后,终端切换到插件工程的根目录中,开始编译插件工程,在终端输入编译指令
log日志的话,可以通过 idevicesyslog 进行查看。