<安全攻防之Logos语法>

Logos概述

Logos是Theos开发套件的一个组件,通过一组特殊的预处理指令,轻松而清晰地编写被hook的方法。
未安装MonkeyDev的请参考文档进行安装,安装成功后会在电脑根目录下生成一个opt文件夹,新建iOS项目的时候在最下方可以新建Monkey项目

<安全攻防之Logos语法>_第1张图片
class-dump.png

<安全攻防之Logos语法>_第2张图片
monkey.png

Logos使用

  • ①.新建iOS项目


    <安全攻防之Logos语法>_第3张图片
    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
<安全攻防之Logos语法>_第4张图片
classHeaders.png
  • ③新建Monkey项目,把ipa包放入该项目Logos/TargetApp目录下并运行


    <安全攻防之Logos语法>_第5张图片
    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;

你可能感兴趣的:(<安全攻防之Logos语法>)