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




目录
相关文章
|
Web App开发
常见命令行用法之备忘
好记性不如烂笔头 打印路由: cmd /c "ipconfig /all & route print & pause" 查看路由:netstat /ano | findstr "9003" 刷新本地dns:ipconfig/flushdns 升级到Windows 8.
663 0
|
网络协议 Unix Linux
解读Linux常用命令使用方法
解读Linux常用命令使用方法
|
7月前
|
监控 Unix 数据处理
Grep命令的高级用法与实用技巧
Grep命令的高级用法与实用技巧
|
Linux Shell
Linux常用命令用法及实现方式
3.查找定位文件 (1)pwd命令:pwd命令用于显示用户当前所处的工作目录,英文全称为“print working directory”,输入该命令后按回车键执行即可。 (2)cd命令:cd命令用于切换当前的工作路径,英文全称为“change directory”,语法格式为“cd [参数] [目录]”。 (3)ls命令:ls命令用于显示目录中的文件信息,英文全称为“list”,语法格式为“ls [参数] [文件名称]”。 (4)tree命令:tree命令用于以树状图的形式列出目录内容及结构,输入该命令后按回车键执行即可。
|
缓存 JavaScript iOS开发
iOS 逆向编程(十五)Cycript 语法进阶(封装 .cy 脚本文件)
iOS 逆向编程(十五)Cycript 语法进阶(封装 .cy 脚本文件)
203 0
|
9月前
|
存储 JSON Shell
进一步学习 nox 教程,轻松掌握命令行用法
进一步学习 nox 教程,轻松掌握命令行用法
78 1

热门文章

最新文章