Logos概述
Logos是Theos开发套件的一个组件,通过一组特殊的预处理指令,轻松而清晰地编写被hook的方法。
未安装MonkeyDev的请参考文档进行安装,安装成功后会在电脑根目录下生成一个opt文件夹,新建iOS项目的时候在最下方可以新建Monkey项目
monkey.png
Logos使用
-
①.新建iOS项目
UI.png - ②.编译后在ipa包中找到MachO文件并使用class-dump导出项目所有头文件,并用Sublime打开
// 参数一 MachO文件名称
// 参数二 导出的路径
// -H header简写
// -o 输出 output简写
// Ex: class-dump -H fishhook -o fishhookHeaders
$class-dump -H xxx -o xxx
classHeaders.png
-
③新建Monkey项目,把ipa包放入该项目Logos/TargetApp目录下并运行
logosM.png
Logos语法
- %group 分组的使用,对于不同的分组,处理的逻辑不同
%group iOS8
%hook IOS8_SPECIFIC_CLASS
// your code here
%end // end hook
%end // end group ios8
%group iOS9
%hook IOS9_SPECIFIC_CLASS
// your code here
%end // end hook
%end // end group ios9
// 分组必须要写构造方法
%ctor {
if (kCFCoreFoundationVersionNumber > 1200) {
%init(iOS9);
} else {
%init(iOS8);
}
}
- %hook使用
%hook xxx // 要hook的类名
// 需要hook当前类下得哪个方法
- (void)touchesBegan:(id)arg1 withEvent:(id)arg2 {
// your code here
%orig; // 不改变原来方法的实现逻辑
}
%end // end hook
- %new使用, 给类或者子类添加新的方法,可以添加多个方法,但是必须在%hook block中使用
%hook ViewController
%new
- (void)eat{
// 给ViewController类添加了一个eat方法
}
%end
- %property 给类添加属性
%property (nonatomic|assign|retain|copy|weak|strong|getter|setter) Type name;
网友评论