Tweak创建锁屏提示简单工程

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

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

工程目录

Tweak创建锁屏提示简单工程_第1张图片
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

你可能感兴趣的:(Tweak创建锁屏提示简单工程)