目录

03-Cycript

03-Cycript

Cycript是Objective-C++、ES6(JavaScript)、Java等语法的混合物

可以用来探索、修改、调试正在运行的Mac\iOS APP

官网http://www.cycript.org/

文档http://www.cycript.org/manual/

通过Cydia安装Cycript,即可在iPhone上调试运行中的APP

  • cycript 开启

  • cycript -p 进程ID

  • cycript -p 进程名称

    https://cdn.jsdelivr.net/gh/xinqinew/pic@main/img/image-20220627204422227.png

  • 取消输入:Ctrl + C

  • 退出:Ctrl + D

  • 清屏:Command + R

ps命令

安装adv-cmds

https://cdn.jsdelivr.net/gh/xinqinew/pic@main/img/image-20220627212325557.png

ps命令是process status的缩写,使用ps命令可以列出系统当前的进程

列出所有的进程

  • ps –A

  • ps aux

搜索关键词

  • ps –A | grep 关键词

常用语法

  • UIApp [UIApplication sharedApplication]

  • 定义变量 var 变量名 = 变量值

  • 用内存地址获取对象 #内存地址

https://cdn.jsdelivr.net/gh/xinqinew/pic@main/img/image-20220627213253776.png

  • ObjectiveC.classes 已加载的所有OC类

  • 查看对象的所有成员变量 *对象

https://cdn.jsdelivr.net/gh/xinqinew/pic@main/img/image-20220627213301158.png

  • 递归打印view的所有子控件(跟LLDB一样的函数) view.recursiveDescription().toString()

  • 筛选出某种类型的对象 choose(UIViewController) choose(UITableViewCell)

封装Cycript - .cy文件编写

https://cdn.jsdelivr.net/gh/xinqinew/pic@main/img/image-20220702221915333.png

  • 将.cy文件存放到/usr/lib/cycript0.9目录下

  • 在Cycript中引用.cy文件,并使用它提供的接口

    https://cdn.jsdelivr.net/gh/xinqinew/pic@main/img/image-20220702221955976.png

  • 全局变量不需要加exports,访问时也不需要加文件名