Theos的使用

简介

iphoneframework是Theos的前身,这是一个为了简化命令行构建代码而创建的项目(主要是越狱设备)。它后来经历了重大的变化,成为现在的Theos,一个灵活的基于Make的构建系统,主要用于越狱软件开发,但也完全支持为其他支持平台构建。

安装

  1. 配置ldid
    ldid是用于对 iOS 可执行文具进行签名的工具,可以在越狱 iOS 中替换 Xcode 自带的签名工具。
    下载,将其移动到 /opt/theos/bin 目录下,然后设置可执行权限。
chmod +x ldid
  1. 配置CydiaSubstrate
    将iOS越狱设备上的/Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate拷贝到Mac上,然后重命名为 libsubstrate.dylib 后放到/opt/theos文件下
  2. 配置 dpkg-deb
    deb 是越狱开发安装包的标准格式,而 dpkg-deb 是操作 deb 文件的工具,有了这个工具,Theos 才能将工程正确地打包成 deb 包。

下载dm.pl,将其重命名为dpkg-deb 后,放到 /opt/theos/bin/“目录下,然后设置它的可执行权限

chmod +x dpkg-deb
  1. 下载theos
sudo git clone --recursive https://github.com/theos/theos.git  /opt/theos
  1. 配置环境变量
    在.bash_profile下新增下面两行,并执行source .bash_profile使环境生效
#Theos配置
export THEOS="/opt/theos"
export PATH="/opt/theos/bin:$PATH"
  1. 测试Theos安装
    打开终端,执行
nic.pl
theos配置成功

tweak简单使用

  1. 新建测试demo,创建一个button,并添加点击事件,将demo运行在测试设备上,接下来我们来hook这个点击事件
@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    UIButton *btn = [UIButton buttonWithType:UIButtonTypeInfoDark];
    [btn setFrame:CGRectMake(20, 100, 200, 40)];
    [btn addTarget:self action:@selector(eventHandler) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:btn];
}

- (void)eventHandler {
    UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"eee" message:@"原来的" delegate:nil cancelButtonTitle:@"ok" otherButtonTitles:nil, nil];
    [alertView show];
}


@end
  1. 通过下面指令
nic.pl
创建tweak工程
  1. 编辑工程
    3.1 HelloTheos.plist - 指定需要hook的应用的bundleid
{ Filter = { Bundles = ( "com.lmf.TheosDemo" ); }; }

3.2 Makefile

INSTALL_TARGET_PROCESSES = SpringBoard

//新增下面两行 配置链接手机的ip和端口,这里做了端口映射
export THEOS_DEVICE_IP = localhost

export THEOS_DEVICE_PORT = 2222

include $(THEOS)/makefiles/common.mk

TWEAK_NAME = HelloTheos

HelloTheos_FILES = Tweak.x
HelloTheos_CFLAGS = -fobjc-arc

//依赖的库
HelloTheos_FRAMWORKS = UIKit

include $(THEOS_MAKE_PATH)/tweak.mk

3.3 Tweak.x

%hook ViewController

- (void)eventHandler {
    UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"aaa" message:@"tweek的" delegate:nil cancelButtonTitle:@"ok" otherButtonTitles:nil, nil];
    [alertView show];
    NSLog(@"tweak eventHandler");
}

%end
  1. make编译


    编译
  2. 端口映射
  3. make package install 安装


    安装

重新打开应用即可验证是否hook成功

注:安装遇到下面报错,注意package name只能用小写字母,且不能用-+.等符号


报错

生活如此美好,今天就点到为止。。。

你可能感兴趣的:(Theos的使用)