Theos 常见指令
在利用 theos 开发一些插件时,我们经常会用到以下几个指令: %hook 指定需要hook的类名,以%end结尾 //hook的是SpringBoard这个类里面的方法 %hook SpringBoard -(void)_menuButtonDown:(id)down { NSLog(@"You've pressed home button"); %orig; //call the original _menuButtonDown } %end %orig 执行被hook函数的原始代码,类似于super.method功能 %hook ClassName - (void) _menuButtonDown: (id)down { NSlog(@"ss"); //如果去掉%orig,那么原始函数不会得到执行。 %orig; } @end %new 该指令用来给现有的class添加一个新的函数。与Runtime中的class_addMethod相同。 %hook SpringBoard //hook内部的代码 默认都是替换被hook类中函数的实现,所以如果不加%new,theos默认是去类中找namespaceNewMethod这个方法,替换它的方法实现。所以如果我们是新增的函数而不是更改原函数的内部实现则需要加%new这个指令 %new -(void)