1、新建tweak项目

新建一个存放tweak项目的文件夹,例如命名为tweak,终端进入tweak文件夹输入:
$ nic.pl

  1. NIC 2.0 - New Instance Creator
  2. ------------------------------
  3. [1.] iphone/activator_event
  4. [2.] iphone/activator_listener
  5. [3.] iphone/application_modern
  6. [4.] iphone/application_swift
  7. [5.] iphone/control_center_module-11up
  8. [6.] iphone/cydget
  9. [7.] iphone/flipswitch_switch
  10. [8.] iphone/framework
  11. [9.] iphone/library
  12. [10.] iphone/notification_center_widget
  13. [11.] iphone/notification_center_widget-7up
  14. [12.] iphone/preference_bundle
  15. [13.] iphone/preference_bundle_swift
  16. [14.] iphone/theme
  17. [15.] iphone/tool
  18. [16.] iphone/tool_swift
  19. [17.] iphone/tweak
  20. [18.] iphone/tweak_with_simple_preferences
  21. [19.] iphone/xpc_service
  22. [20.] iphone/xpc_service_modern
  23. Choose a Template (required):

选择iphone/tweak:17 回车

  1. Project Name (required):

以喜马拉雅为例:tweak_ting 回车

  1. Package Name [com.yourcompany.tweak_ting]:

以喜马拉雅为例:com.xl.ting 回车

  1. Author/Maintainer Name [mxl]:

默认是用户名:回车

  1. [iphone/tweak] MobileSubstrate Bundle filter [com.apple.springboard]:

以喜马拉雅为例:com.gemd.iting 回车

  1. [iphone/tweak] List of applications to terminate upon installation (space-separated, '-' for none) [SpringBoard]:

默认重启SpringBoard:回车

  1. Done.

当输出Done.时,代表新建完成!

获取App的BundleId可以通过mjcript:cy# MJAppId 也可以使用脱壳工具:$ python3 dump.py -l

2、编写tweak代码

2.1、编辑Makefile

在Makefile中添加环境变量,写清楚通过哪个IP和端口访问手机:

  1. export THEOS_DEVICE_IP=127.0.0.1
  2. export THEOS_DEVICE_PORT=10010

由于现在采用usb的方式连接,所以ip是本机ip127.0.0.1,端口是映射的10010端口

如果不希望每个项目的Makefile都编写IP和端口环境变量,也可以添加到用户的配置文件中(推荐):
$ vim ~/.zprofile

  1. export THEOS_DEVICE_IP=127.0.0.1
  2. export THEOS_DEVICE_PORT=10010

编辑完毕如果需要立即生效需要终端输入:$ source ~/.zprofile 或重启终端

2.2、编写代码

打开Tweak.x文件,编写tweak代码,结构一般如下:

  1. // 需要hook的类
  2. %hook XXXClass
  3. // 需要hook的方法
  4. - (id)XXXFunction {
  5. return nil;
  6. }
  7. // hook结束
  8. %end

2.3、多文件开发

如果调整了Tweak.x文件路径,比如放在新建的src文件夹下,需要调整Makefile中的tweak_wechat_FILES:
tweak_wechat_FILES = src/Tweak.x
如果添加了一些其它文件需要编译,也可以使用通配符进行配置:
tweak_wechat_FILES = src/.x src/Model/.m src/View/.m src/Controller/.m
在导入头文件时也需要添加所在路径:

  1. #import "Model/MyModel.h"

3、编译、打包、安装

编译:$ make
打包:$ make package
安装:$ make install
执行安装命令后,插件就会被安装到iPhone上并重启SpringBoard。终端支持使用 && 合并命令,可以在用户目录下创建一个tweak.sh文件,写入命令:

  1. make clean && make package debug=0 && make install

之后打包可以在终端直接输入:$ sh ~/tweak.sh

make package 包含 make 操作 发布release版本:$ make package debug=0

4、卸载插件

4.1、Cydia卸载(推荐)

在Cydia中找到已安装的插件点击卸载即可:
image.png

4.2、手动卸载

找到 iPhone上的 /Device/Library/MobileSubstrate/DynamicLibraries/ 路径下的 tweak_ting.plisttweak_ting.dylib 删除即可。