iOS 使用Cycript进行运行时分析

获得进程 PID

在越狱设备中开启某个项目,并切回到越狱设备的终端,找到项目的进程编号 PID。

 ps aux | grep "项目名"

* mobile    3098   0.0  2.6   636116  25480   ??  Ss    3:51PM   0:02.18 /Applications/AutoGetRedPacket.app/AutoGetRedPacket
* root      3140   0.0  0.0   525864    200 s000  R+    4:17PM   0:00.01 grep AutoGetRedPacket

找到 mobile 对应的 PID 949,之后利用 Cycript 进行运行时分析

使用 Cycript

cycript -p PID   执行之后进入相应的进程

使用Cycript有如下好处:

1. 我们能够挂钩正在运行的进程,并且找出正被使用的类信息,例如view controllers,内部和第3方库,甚至程序的delegate的名称。
2. 对于一个特定的类,例如View Controller, App delegate或者任何其他的类,我们能够得到所有被使用的方法名称。
3. 我们能够得到所有实例变量的名称和在程序运行的任意时刻实例变量的值。
4. 我们能够在运行时修改实例变量的值。
5. 我们能够执行Method Swizzling,例如替换一个特定方法的实现。
6. 我们可以在运行时调用任意方法,即使这个方法目前并不在应用的实际代码当中。