Logos 基本使用

前言

  • Theos创建tweak工程,默认生成的源文件是tweak.xm,而Logos即是其所用的语法
  • 本文直接使用MonkeyDev创建项目演示Logos使用(MonkeyDev包含了Theos)
  • 查看Logos文档(当然要有英语基础啦)-->Logos文档

基本语法

Logos语法分为三大类

  • Block level
    这一类型的指令会开辟一个代码块,以%end结束。
    %group、%hook、% subclass 、 %end
  • Top level
    这个TopLevel指令不放在BlockLevel中。
    %config、%hookf、%ctor、%dtor
  • Function levell
    这一块的指令就放在方法中。
    %init、%class、%c、 %orig、%log

Logos语法常用指令

  • %hook
    指定需要hook(勾住)的class,必须以%end结尾。
  • %log
    能够输出日志,输出方法调用的详细信息,可以%log([(),…..])的格式追加其他打印信息。
  • %orig
    该指令在函数内部使用,表示调用原本的函数。
  • %group
    用于将%hook分组,便于代码管理及按条件初始化分组,必须以%end结尾。 一个%group可以包含多个%hook,所有不属于某个自定义group的%hook会被隐式归类到%group_ungrouped中。
  • %init
    该指令用于初始化某个%group,一般在%ctor内调用;如果带参数,则初始化指定的group,如果不带参数,则初始化_ungrouped。只有调用了%init,对应的%group才能起作用。
  • %ctor
    构造函数 Tweak的constructor,完成初始化工作;如果不显示定义,Theos会自动生成一个%ctor,并在其中调用%init(_ungrouped)
  • %dtor
    析构函数
  • %c
    类似getClass函数,获得一个类对象。一般用于调用类方法。
  • %new
    给hook的Class添加新函数

实践

hook登录按钮点击和增加方法

image.png
image.png

分组%group

image.png
image.png
image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容