Cycript
Cycript
Cycript 是一种运行时的动态分析工具,它可以在运行的 iOS 应用程序中注入代码,并与其交互。使用 Cycript,你可以在运行时检查和修改应用程序的状态、调用其方法、查看和修改变量值等。
Cycript 的语法类似于 JavaScript,它包含了一些特殊的命令和语法,用于与 iOS 应用程序进行交互。也可以用使用OC的语法。
可以使用 Cycript 来执行以下操作:
- 在运行的应用程序中查找对象、类、方法和属性。
- 在运行的应用程序中调用方法、读取和设置属性值。
- 在运行的应用程序中查看和修改变量值。
- 在运行的应用程序中创建新的对象、类和方法。
- 与其他 Cycript 用户共享代码片段和脚本。
Cycript 可以在越狱的 iOS 设备上使用,并且可以通过 Cydia 或者 Sileo 应用商店安装
用法
- 首先打开越狱手机的SSH通道使电脑可以连接到手机


- 连接手机
ssh root@127.0.0.1 -p2222
用上面获取到了ip地址和端口号
输入密码。默认密码是alpine

- 找到进程
ps -A

- 用Cycript挂载进程
cycript -p CallAnnie
当出现 cy# 表示挂载成功,可以使用cycript的语法进行运行时分析了

快捷键
| 快捷键 | 描述 |
|---|---|
| ctrl + c | 取消当前输入或中断执行中的命令 |
| ctrl + d | 退出 Cycript |
| ctrl + l | clear 清屏 |
常用命令
[[UIApp keyWindow] _autolayoutTrace].toString()
使用 _autolayoutTrace 打印当前页面视图层级, UIApp 就相当于 UIApplication

可以看到 CallAnnie 中的View都是 SwiftUI View
内存地址访问对象
# + 内存地址 这种方式可以通过内存地址访问这个对象
比如我们找到这个_TtC7SwiftUIP33_A34643117F00277B93DEBAB70EC0697122_UIShapeHitTestingView:0x85ea703d0,也就是CallAnnie 首页下面的Talk To Annie按钮,查看他的属性

查看对象的所有成员变量
在对象前面加个 * 号,比如*UIApp

或者用我们刚刚拿到的这个按钮视图
*#0x85ea703d0

可以看到他有一个_layer:#"<SwiftUI.GradientLayer: 0x281772700>"属性,也证实了确实是这个按钮
choose筛选出指定类型的对象
指定一个类,只要是继承或者等于这个类的都会被列出来,只会列出已加载到缓存中。

如果没有就会是空数组

还有很多其他用法

浙公网安备 33010602011771号