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




目录
相关文章
|
9月前
|
NoSQL 编译器 Linux
gdb调试工具的使用方法
gdb调试工具的使用方法
92 1
|
监控 Linux Shell
(二)Linux命令行工具进阶:探索高级功能
在Linux系统中,命令行工具提供了丰富的高级功能,用于处理文本、管理进程、监控系统性能等任务。本文将深入探讨一些高级命令和技巧,帮助您更加高效地利用Linux命令行。
110 1
|
7月前
|
监控 Unix 数据处理
Grep命令的高级用法与实用技巧
Grep命令的高级用法与实用技巧
|
8月前
|
Java Linux 网络安全
Linux常用50个命令分享:功能、示例与实用技巧
Linux常用50个命令分享:功能、示例与实用技巧
|
小程序 UED 开发者
小程序的基本用法
小程序的基本用法
|
缓存 JavaScript iOS开发
iOS 逆向编程(十五)Cycript 语法进阶(封装 .cy 脚本文件)
iOS 逆向编程(十五)Cycript 语法进阶(封装 .cy 脚本文件)
202 0
|
Web App开发 存储
Mac 技术篇-通过AppScript编写脚本实现设置快捷键打开指定程序实例演示
Mac 技术篇-通过AppScript编写脚本实现设置快捷键打开指定程序实例演示
530 0
  Mac 技术篇-通过AppScript编写脚本实现设置快捷键打开指定程序实例演示
|
Web App开发
Chrome插件Vimium的基础用法
Chrome插件Vimium的基础用法
1378 0

相关实验场景

更多