Cycript

Cycript

Cycript 是一种运行时的动态分析工具,它可以在运行的 iOS 应用程序中注入代码,并与其交互。使用 Cycript,你可以在运行时检查和修改应用程序的状态、调用其方法、查看和修改变量值等。

Cycript 的语法类似于 JavaScript,它包含了一些特殊的命令和语法,用于与 iOS 应用程序进行交互。也可以用使用OC的语法。

可以使用 Cycript 来执行以下操作:

  • 在运行的应用程序中查找对象、类、方法和属性。
  • 在运行的应用程序中调用方法、读取和设置属性值。
  • 在运行的应用程序中查看和修改变量值。
  • 在运行的应用程序中创建新的对象、类和方法。
  • 与其他 Cycript 用户共享代码片段和脚本。

Cycript 可以在越狱的 iOS 设备上使用,并且可以通过 Cydia 或者 Sileo 应用商店安装

用法

  1. 首先打开越狱手机的SSH通道使电脑可以连接到手机

WX20230510-091011_2x

WX20230510-091111_2x

  1. 连接手机

ssh root@127.0.0.1 -p2222

用上面获取到了ip地址和端口号

输入密码。默认密码是alpine

WX20230510-091044_2x

  1. 找到进程

ps -A

WX20230510-091258_2x

  1. 用Cycript挂载进程

cycript -p CallAnnie

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

WX20230510-091448_2x

快捷键

快捷键 描述
ctrl + c 取消当前输入或中断执行中的命令
ctrl + d 退出 Cycript
ctrl + l clear 清屏

常用命令

[[UIApp keyWindow] _autolayoutTrace].toString()

使用 _autolayoutTrace 打印当前页面视图层级, UIApp 就相当于 UIApplication

WX20230510-091828_2x

可以看到 CallAnnie 中的View都是 SwiftUI View

内存地址访问对象

# + 内存地址 这种方式可以通过内存地址访问这个对象

比如我们找到这个_TtC7SwiftUIP33_A34643117F00277B93DEBAB70EC0697122_UIShapeHitTestingView:0x85ea703d0,也就是CallAnnie 首页下面的Talk To Annie按钮,查看他的属性

WX20230510-092037_2x

查看对象的所有成员变量

在对象前面加个 * 号,比如*UIApp

WX20230510-092416_2x

或者用我们刚刚拿到的这个按钮视图

*#0x85ea703d0

WX20230510-092550_2x

可以看到他有一个_layer:#"<SwiftUI.GradientLayer: 0x281772700>"属性,也证实了确实是这个按钮

choose筛选出指定类型的对象

指定一个类,只要是继承或者等于这个类的都会被列出来,只会列出已加载到缓存中。

WX20230510-092831_2x

如果没有就会是空数组

WX20230510-092755_2x

还有很多其他用法

传送门

posted @ 2023-05-25 14:46  R1cardo  阅读(109)  评论(0编辑  收藏  举报