Cycript高级用法 & Logos (19)

简介: Crcript高级用法

Crcript高级用法


官网


脚本链接


1. cycript -r 192.168.3.223:6666
2. 建议创建一个文件夹放自己常用的Shell脚本 -> 去到自己的Shell文件夹下
3. vi cyConnect.sh -> 创建一个脚本
   1. cycript -r 192.168.3.223:6666 ->  :x 保存
   2. 脚本自动连接
   3. 配置环境变量 -> 定义一个脚本路径 -> 加入PATH -> 重新加载终端
      1. source ~/.zshrc -> 重新加载
4. sh cyConnect.sh
5. cy# [UIApp setApplictionBadgeString: @"999"] -> 改外面未读数
6. 改微信红包上的数字
   1. choose(UILabel)
   2. #对象地址.text = @"¥8888.00"
7. Crcript -> Xcode不运行,也能连上APP
   1. MonkeyDev里面 -> Config -> MDConfig.plist -> Cycript -> MS.cy/md.cy -> 就是封装好的Crcript语法

封装自己的cy文件


1. 去到工程目录 -> vi test.cy
   1. sum = function(a,b){return a + b;} -> :x保存
2. 放置在后面名字为Dylib文件下,让其参与编译
   1. Build Phases -> Copy Files -> 添加该文件 不用勾选
   2. 编译项目
3. 链接手机 -> sh cyConnect.sh
   1. @import test -> 导入引入的cy文件 -> 调用sum(10,20)测试
4. Sublime Text -> 软件(需要下载) -> cy文件查看 -> 右下角可以选择语言
   1. 查看文件hank
   2. 编译并调用hank.cy来试试(记得导入@import hank)
   3. HKCurrentVC() -> pvcs() 这样来快速找视图


Logos语法


Logos语法其实是CydiaSubstruct框架提供的一组宏定义。便于开发者使用宏进行HOOK操作。语法简单,功能强大且稳定。


Logos语法Git


拿到可执行文件的头文件


1. 准备工作
   1. 一个项目的可执行文件
   2. class-dump -H Demo -o DemoHeaders/ -> 导出该可执行问价的头文件
   3. 用Sublime Text打开文件夹
2. 将上一步编译生成的文件放到新建的MonkeyDev工程里面进行安装
3. Logos文件 -> .xm -> type -> Objective-C++ Pre

Logos语法展示


%hook


hook ViewController 下的 loginBtnClick


#import <UIKit/UIKit.h>
@interface ViewController:UIViewController
@end
%hook ViewController
- (void)loginBtnClick:(id)arg1{
    UIAlertController * alertVC = [UIAlertController alertControllerWithTitle:@"HOOK成功group2!!" message:nil preferredStyle:(UIAlertControllerStyleAlert)];
    UIAlertAction * cancel = [UIAlertAction actionWithTitle:@"确定" style:(UIAlertActionStyleCancel) handler:nil];
    [alertVC addAction:cancel];
    [self showViewController:alertVC sender:nil];
}
%end


%group


注意: 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
//group构造
%ctor {
    if (kCFCoreFoundationVersionNumber > 1200) {
        %init(iOS9);
    } else {
        %init(iOS8);
    }
}


%log


打印与方法有关的所有信息


%orig

调用原来的方法


  1. 如果有返回值


id result = %orig; -> retrun (result + 1); 还可以做修改

%new & %c


  • 添加一个方法, 该界面没有实现的, 必须在%hook %end内


%new
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    [self.view endEditing:YES];
    //调用类方法
    [%c(ViewController) HK_classMethod];
}
%new
+(void)HK_classMethod{
    NSLog(@"这是一个类方法!");
}


总结


Logos语法分三大类


  1. Block Level


       1.这一类型的指令会开辟一个代码块,以%end结束。

       2.%group、%hook、% subclass 、 %end


  1. Top Level


       1.这个TopLevel指令不放在BlockLevel中。

       2.%config、%hookf、%ctor、%dtor


  1. Function Level


       1.这一块的指令就放在方法中。

       2.%init、%class、    %c、 %orig、%log



微信图片_20220509231538.png
image.png




目录
相关文章
|
8月前
|
NoSQL 编译器 Linux
gdb调试工具的使用方法
gdb调试工具的使用方法
89 1
|
监控 Linux Shell
(二)Linux命令行工具进阶:探索高级功能
在Linux系统中,命令行工具提供了丰富的高级功能,用于处理文本、管理进程、监控系统性能等任务。本文将深入探讨一些高级命令和技巧,帮助您更加高效地利用Linux命令行。
104 1
|
Shell Linux
Linux Shell 进阶:探索高级命令和脚本编程技巧
Linux Shell不仅仅是一个命令解释器,它还提供了许多强大的高级命令和脚本编程技巧,能够帮助用户更高效地管理系统和处理数据。在这篇文章中,我们将深入探讨Linux Shell的高级功能。
265 0
|
5月前
|
API C# Shell
WPF与Windows Shell完美融合:深入解析文件系统操作技巧——从基本文件管理到高级Shell功能调用,全面掌握WPF中的文件处理艺术
【8月更文挑战第31天】Windows Presentation Foundation (WPF) 是 .NET Framework 的关键组件,用于构建 Windows 桌面应用程序。WPF 提供了丰富的功能来创建美观且功能强大的用户界面。本文通过问题解答的形式,探讨了如何在 WPF 应用中集成 Windows Shell 功能,并通过具体示例代码展示了文件系统的操作方法,包括列出目录下的所有文件、创建和删除文件、移动和复制文件以及打开文件夹或文件等。
108 0
|
6月前
|
监控 Unix 数据处理
Grep命令的高级用法与实用技巧
Grep命令的高级用法与实用技巧
|
Java Linux Shell
Linux开发和编程指南:搭建环境、Shell脚本与常见编程语言配置及使用
Linux开发和编程指南:搭建环境、Shell脚本与常见编程语言配置及使用
1778 0
|
Java Shell Linux
适合初学者的Shell核心知识笔记(下)
适合初学者的Shell核心知识笔记(下)
|
8月前
|
Shell
Shell 编程快速入门 之 函数基础知识
Shell 编程快速入门 之 函数基础知识
110 0
Shell 编程快速入门 之 函数基础知识
|
Linux Shell
Linux常用命令用法及实现方式
3.查找定位文件 (1)pwd命令:pwd命令用于显示用户当前所处的工作目录,英文全称为“print working directory”,输入该命令后按回车键执行即可。 (2)cd命令:cd命令用于切换当前的工作路径,英文全称为“change directory”,语法格式为“cd [参数] [目录]”。 (3)ls命令:ls命令用于显示目录中的文件信息,英文全称为“list”,语法格式为“ls [参数] [文件名称]”。 (4)tree命令:tree命令用于以树状图的形式列出目录内容及结构,输入该命令后按回车键执行即可。
|
机器学习/深度学习 Shell Linux
适合初学者的Shell核心知识笔记(上)
适合初学者的Shell核心知识笔记(上)
106 0