什么是tweak(鉤子)程序
創(chuàng)建第一個(gè)鉤子程序
-
創(chuàng)建工程
- 選擇tweak
- 輸入tweak工程名
- 輸入deb包的名稱(Bundle identifier)
- 輸入作者名稱
- 輸入tweak應(yīng)用對(duì)象 com.apple.springboard
- 輸入tweak安裝完成后需要重啟的應(yīng)用SpringBoard
-
工程說明
Makefile 文件制定工程用到的文件觉渴,框架,庫等信息,將整個(gè)過程自動(dòng)化
導(dǎo)入公共庫
include $(THEOS)/makefiles/common.mk設(shè)置工程名
TWEAK_NAME = 工程名tweak包含的源文件邮辽,多個(gè)文件以空格分隔(可以按需求修改)
工程名_FILES = Tweak.xm安裝工程后執(zhí)行腳本
install.exec "killall -9 SpringBoard"指定處理器架構(gòu)
ARCHS = arm7 arm 64指定SDK版本
TARGET = iphone:lastest:8.0導(dǎo)入framework
工程名_FRAMEWORKS = UIKit鏈接Mach-O對(duì)象
工程名_LDFLAGS = -lz -lsqlite3.0設(shè)置THEOS_DEVICE_IP環(huán)境變量仿吞,方便安裝
THEOS_DEVICE_IP =
tweak.mx文件說明
后綴“x”表示支持Logos和C語言确憨,后綴“mx”表示支持Logos和C/C++/Object-C語法
-
介紹Logos語法
- %hook 指定需要hook的class氧猬,必須以%end結(jié)尾
- %log 該指令在%hook內(nèi)部使用怀伦。將函數(shù)的類名壁涎,參數(shù)等信息寫入syslog
- %orig 該指令在%hook內(nèi)部使用凡恍。執(zhí)行被構(gòu)筑的函數(shù)的原始代碼,如果去 掉%orig那么原始代碼就不會(huì)被調(diào)
- %group 代碼分組
- %init 代碼初始化
- %ctor 構(gòu)造方法
- %new 在hook的class創(chuàng)建新方法
- 內(nèi)部使用class_addMethod運(yùn)行時(shí)構(gòu)建
- Category與class_addMethod區(qū)別怔球,前者是靜態(tài)的嚼酝,后者是動(dòng)態(tài)的,編譯時(shí)會(huì)找不到該類竟坛,但是hook的類又是app中的類闽巩,所以要用動(dòng)態(tài)創(chuàng)建
- %c 該指令的作用等同于objc_getClass或者NSClassFromString,即動(dòng)態(tài)獲取一個(gè)類的定義担汤,在%hook或%ctor內(nèi)使用
control 文件記錄了deb包管理系統(tǒng)所需的基本信息涎跨,會(huì)被打包進(jìn)deb包里。會(huì)在Cydia中看到
-
project.plist 這個(gè)plist文件的作用和App中的Info.plist了類似崭歧,它記錄了一些配置信息隅很,描述了tweak的作用范圍,比如hook哪個(gè)app Filter下是一個(gè)array率碾,可以分為3類
- Bundles叔营,指定若干bundle為tweak作用對(duì)象
- Classes,指定若干class為tweak的作用對(duì)象
- Executables播掷,指定若干個(gè)可執(zhí)行文件為tweak的作用對(duì)象
-
編譯审编,打包,安裝歧匈,清理
- 編譯執(zhí)行 make
- 打包 make package
- 安裝 make package install
- 清理 make clean
制作開發(fā)腳本
滿地打滾賣萌求贊垒酬,如果本文幫助到你,輕點(diǎn)下方的紅心件炉,給作者君增加更新的動(dòng)力勘究。