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筛选出指定类型的对象
指定一个类,只要是继承或者等于这个类的都会被列出来,只会列出已加载到缓存中。
如果没有就会是空数组
还有很多其他用法