获得进程 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. 我们可以在运行时调用任意方法,即使这个方法目前并不在应用的实际代码当中。
- Cycript高级技巧 http://www.jianshu.com/p/fbb824c285d0
- Cycript Tricks http://iphonedevwiki.net/index.php/Cycript_Tricks