美文网首页
Theos tweak iPhone Linux

Theos tweak iPhone Linux

作者: 书SHU | 来源:发表于2019-06-18 09:47 被阅读0次

    安装 Theos

    在右侧选择操作系统后进行安装:
    https://github.com/theos/theos/wiki/Installation-Linux
    安装完成后记得添加 bin 目录到 $PATH 中。

    连接 iPhone

    安装 OpenSSH

    Cydia 中安装好 OpenSSH。

    修改 root 密码

    为了安全,记得修改 iPhone 的 root 密码:

    $ ssh root@192.168.x.x  # iPhone 与电脑连接同一个 wifi 后,查看 iPhone 的 ip
    
    提示输入密码,默认为alpine。
    
    $ passwd root  # 输入新密码进入修改
    

    免密码登录

    将电脑中的 ssh 公钥 拷贝到 iPhone 的 ~/.ssh 目录下:

    # 电脑上执行
    $ cat ~/.ssh/id_rsa.pub
    复制输出的密钥内容。
    
    # iPhone 上粘贴
    $ ssh root@192.168.x.x  # 登入 iPhone
    $ echo "xxx" >> ~/.ssh/authorized_keys  # xxx 为复制的公钥内容
    

    第一个 Tweak

    # nic.pl 为 theos 的 bin 下的工具(确保已经添加 bin 目录到 $PATH 中)
    finn@thinkpad:/tmp 
    9:32:48$ nic.pl
    NIC 2.0 - New Instance Creator
    ------------------------------
      [1.] iphone/activator_event
      [2.] iphone/application_modern
      [3.] iphone/application_swift
      [4.] iphone/flipswitch_switch
      [5.] iphone/framework
      [6.] iphone/library
      [7.] iphone/preference_bundle_modern
      [8.] iphone/tool
      [9.] iphone/tool_swift
      [10.] iphone/tweak
      [11.] iphone/xpc_service
    Choose a Template (required): 10
    Project Name (required): mytweak
    Package Name [com.yourcompany.mytweak]: 
    Author/Maintainer Name [finn]: 
    [iphone/tweak] MobileSubstrate Bundle filter [com.apple.springboard]: com.xx.kk  # *[1]
    [iphone/tweak] List of applications to terminate upon installation (space-separated, '-' for none) [SpringBoard]: 
    Instantiating iphone/tweak in mytweak/...
    Done.
    

    *[1] 这里很重要,需要输入,你要 hook 的 app 的 bundle id。查看程序的 bundle id 有很多方法,我是直接通过 ReProvision 查看的。一般安装完 unc0ver 后,我会安装 ReProvision 进行应用的自动重新签名,它会显示应用的 id。

    修改 makefile,添加 iPhone 的 IP,可以免 usb 调试

    $ cd mytweak
    $ vi Makefile
    

    添加 IP,以及安装完成后自动重启手机桌面使插件生效:

    # the IP of iPhone
    THEOS_DEVICE_IP = 192.168.x.x
    # restart springboard after install
    after-install::
        install.exec "killall -9 SpringBoard"
    

    注意: Makefile 中需要使用 tab 进行缩进,不要使用空格。

    编写 Tweak.x,随便 hook 一个程序。

    如何查看程序的 ui 布局:
    在 Cydia 中安装 FLEXible(作者 Shmoopi),在系统设置中找到它,并对要调试的程序进行开启。重启要调试的程序,审查界面元素即可,找到布局导致,以及 Controller/Method 等信息。

    用丑陋的 Object-C 随意写点东西:

    - (void)startCountDown {
        %orig;
    
        // 初始化
        if(!inited) {
            inited = true;
    
            // 点击复制动态码
            UILabel *label = self.subviews[1];
            label.userInteractionEnabled = true;
            UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] 
                         initWithTarget:self 
                         action:@selector(copyCodeToClipboard)];
            [label addGestureRecognizer:tapGesture];
    
            // 注入复制按钮
            [self injectCopyButton];
        }
    }
    
    

    编译安装:

    $ make package install
    

    打包给未越狱用户使用

    通过 theos 打包后为 deb 包,仅能在越狱机器使用。而我们需要在未越狱机上面使用,就需要将我们写的代码编译为动态链接库,并注入到原app中。

    theos 除了打包成 deb 外,还会在工程根目录下生成动态链接库:

    finn@thinkpad:/tmp/mytweak 
    9:51:07$ tree .theos 
    .theos
    ├── _
    │   ├── DEBIAN
    │   │   └── control
    │   └── Library
    │       └── MobileSubstrate
    │           └── DynamicLibraries
    │               ├── mytweak.dylib
    │               └── mytweak.plist
    ├── build_session
    ├── fakeroot
    ├── last_package
    ├── obj
    │   └── debug
    │       ├── arm64
    │       │   ├── mytweak.dylib  # 这里
    │       │   ├── Tweak.x.ac12b8c9.o
    │       │   └── Tweak.x.ac12b8c9.Td
    │       ├── armv7
    │       │   ├── mytweak.dylib  # 这里
    │       │   ├── Tweak.x.32257dda.o
    │       │   └── Tweak.x.32257dda.Td
    │       └── mytweak.dylib    # 这里(我一般使用最外层这个)
    └── packages
        └── com.yourcompany.mytweak-0.0.1
    
    10 directories, 14 files
    

    具体请参考:https://www.jianshu.com/p/cd1f8ae46a3c ,按照 该文章详细进入即可。

    相关文章

      网友评论

          本文标题:Theos tweak iPhone Linux

          本文链接:https://www.haomeiwen.com/subject/eglxqctx.html