【iOS】iOS逆向系列三 - Cycript

Cycript的使用。

一、Cycript

Cycript是Objective-C++、ES6(JavaScript)、Java等语法的混合物。可以用来探索、修改、调试正在运行的Mac\iOS APP。

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

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

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

1.1. 开启Cycript

开启Cycript有三种方式:

1
2
3
cycript
cycript -p 进程ID
cycript -p 进程名称

取消输入:Ctrl + C

退出:Ctrl + D

清屏:Command + R

1.2. ps命令

安装adv-cmds。

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

列出所有的进程:

1
2
ps –A
ps aux

搜索关键词:

1
ps –A | grep 关键词

1.3. 常用语法

  • 应用程序

    1
    2
    UIApp等价于
    [UIApplication sharedApplication]
  • 定义变量

    1
    var 变量名 = 变量值
  • 用内存地址获取对象

    1
    #内存地址

  • 应用已加载的所有OC类

    1
    ObjectiveC.classes
  • 查看对象的所有成员变量

    1
    *对象

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

    1
    view.recursiveDescription().toString()
  • 筛选出某种类型的对象

    1
    2
    choose(UIViewController)
    choose(UITableViewCell)

1.4. 封装Cycript

我们可以将常用的Cycript代码封装在一个.cy文件中。exports参数名固定,用于向外提供接口。

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

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

MJRefresh作者创建的常用库:https://github.com/CoderMJLee/mjcript