创建第一个钩子程序

什么是tweak(钩子)程序

创建第一个钩子程序

  • 创建工程

    • 选择tweak
    • 输入tweak工程名
    • 输入deb包的名称(Bundle identifier)
    • 输入作者名称
    • 输入tweak应用对象 com.apple.springboard
    • 输入tweak安装完成后需要重启的应用SpringBoard
  • 工程说明

    • Makefile 文件制定工程用到的文件,框架,库等信息,将整个过程自动化

    • 导入公共库
      include $(THEOS)/makefiles/common.mk

    • 设置工程名
      TWEAK_NAME = 工程名

    • tweak包含的源文件,多个文件以空格分隔(可以按需求修改)
      工程名_FILES = Tweak.xm

    • 安装工程后执行脚本
      install.exec "killall -9 SpringBoard"

    • 指定处理器架构
      ARCHS = arm7 arm 64

    • 指定SDK版本
      TARGET = iphone:lastest:8.0

    • 导入framework
      工程名_FRAMEWORKS = UIKit

    • 链接Mach-O对象
      工程名_LDFLAGS = -lz -lsqlite3.0

    • 设置THEOS_DEVICE_IP环境变量,方便安装
      THEOS_DEVICE_IP =

  • tweak.mx文件说明

  • 后缀“x”表示支持Logos和C语言,后缀“mx”表示支持Logos和C/C++/Object-C语法

  • 介绍Logos语法

    • %hook 指定需要hook的class,必须以%end结尾
    • %log 该指令在%hook内部使用。将函数的类名,参数等信息写入syslog
    • %orig 该指令在%hook内部使用。执行被构筑的函数的原始代码,如果去 掉%orig那么原始代码就不会被调
    • %group 代码分组
    • %init 代码初始化
    • %ctor 构造方法
    • %new 在hook的class创建新方法
    • 内部使用class_addMethod运行时构建
    • Category与class_addMethod区别,前者是静态的,后者是动态的,编译时会找不到该类,但是hook的类又是app中的类,所以要用动态创建
    • %c 该指令的作用等同于objc_getClass或者NSClassFromString,即动态获取一个类的定义,在%hook或%ctor内使用
  • control 文件记录了deb包管理系统所需的基本信息,会被打包进deb包里。会在Cydia中看到

  • project.plist 这个plist文件的作用和App中的Info.plist了类似,它记录了一些配置信息,描述了tweak的作用范围,比如hook哪个app Filter下是一个array,可以分为3类

    • Bundles,指定若干bundle为tweak作用对象
    • Classes,指定若干class为tweak的作用对象
    • Executables,指定若干个可执行文件为tweak的作用对象
  • 编译,打包,安装,清理

    • 编译执行 make
    • 打包 make package
    • 安装 make package install
    • 清理 make clean
  • 制作开发脚本

满地打滚卖萌求赞,如果本文帮助到你,轻点下方的红心,给作者君增加更新的动力。

你可能感兴趣的:(创建第一个钩子程序)