Tweak创建锁屏提示简单工程

效果:当iphone锁屏弹出一个提示

cd LockScreenTest
export THEOS=/Users/tqh/theos
/Users/tqh/theos/bin/nic.pl
 11

工程目录

0BEEF9ED-5EEF-4F54-ADD0-408FDDA9A5EE.png

Makefile文件

ARCHS = armv7 armv7s arm64
SDKVERSION = 10.3
TARGET = iPhone:clang:10.3:7.0
include $(THEOS)/makefiles/common.mk

TWEAK_NAME = Alert
Alert_FILES = Tweak.xm

include $(THEOS_MAKE_PATH)/tweak.mk

after-install::
    install.exec "killall -9 SpringBoard"

Tweak.xm文件

找到对应的类文件SBLockScreenManager.h其中有方法

- (void)lockUIFromSource:(NSUInteger)source withOptions:(NSDictionary *)options

代码实现


%hook SBLockScreenManager

- (void)lockUIFromSource:(NSUInteger)source withOptions:(NSDictionary *)options{
    %orig;
    
    UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"提示" message:@"这是个锁屏测试" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];
    
    [alertView show];
}

%end

常用Logos语法简介

  • %hook 指定需要hook的类名,以%end结尾
  • %log 用来打印log的,将信息输入到syslog中,如%log((NSString *)@"ZeluLi")
  • %orig 执行被hook函数的原始代码,类似于super.method功能
  • %group 该指令用于%hook的分组,%group后边跟的是组名,%group也是必须以%end结尾,其中可以包含多个%hook
    %init 该指令用来初始化某个%group,一个group只有被初始化后才可生效,init必须在hook中进行执行。
  • %ctor tweak的构造器,用来初始化,如果不显式定义,Theos就会自动生成一个%ctor,并在其中调用%init(_ungrouped). 如:%ctor { %init(_ungrouped)}
  • %new 该指令用来给现有的class添加一个新的函数。与Runtime中的class_addMethod相同。
  • %c 该指令用来获取一个类的名称,类似于objc_getClass。
  • 更多:http://iphonedevwiki.net/index.php/Logos

control

control文件中存储的内容记录了deb包管理系统所需的基本信息,会被打包进deb包里。下方就是control中内容,其中存储的就是一些包名、工程名、版本、作者等等,与打包安装后在Cydia中看到的信息相同。
工程demo:
https://github.com/tqhnet/Tweak-Alert
参考链接:
http://security.ios-wiki.com/issue-3-6/
http://www.cnblogs.com/ludashi/p/5714095.html

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

推荐阅读更多精彩内容