Logos
2020-05-11 本文已影响0人
coder_feng
Logos
Logos语法其实是CydiaSubstruct框架提供的一组宏定义,便于开发者使用宏进行Hook操作,语法简单,功能强大且稳定(http://iphonedevwiki.net/index.php/Logos)
Logos语法
Logos 语法分为三大类
- Block level
这一类型的指令会开辟一个代码块,以%end结束。
%group,%hook,%subclass,%end
Top level
这个TopLevel指令不放在BlockLevel中
%config,%hookf,%ctor,%dtor
Function level
这一块的指令就放在方法中
%init,%class,%c,%orig,%log
常用语法
HOOK某个类里面的某个方法
%hook ClassName
//对象方法
- (void)instanceMethod{
}
//类方法
+(void)classMethod{
}
%end
为某个类添加新方法
%hook ClassName
//添加一个类方法
%new
+ (void)newClassMethod{
}
//添加一个对象方法
- (void)newInstanceMethod{
}
%end
其他语法
%group
用来将代码分组,开发中hook代码会很多,这样方便管理Logos代码
- %group group1
- %hook ClassName
%end
%end
%ctor(constructor)
构造函数,用于确定加载那个组,和%init结合用
%init
用来初始化某个组
%log
能够输入日志!!输出方法调用的详细信息
%orig(original)
这个就是保持原有的方法实现,如果原来的方法有返回值,那么%orig就有返回值的
%new
给某个类添加方法,在%hook和%end中使用
%new
- (void)touchesBegan:(NSSet<UITouch *> *) touches withEvent:(UIEvent *)event{
[self.view endEditing:YES];
}
%c
类似getClass函数,获得一个类对象,一般用于调用类方法