Cycript
- oc++,js,java的混合物.
- 可以用来探索mac/ios app.
iPhone上先安装
adv-cmds
常用命令:
ps命令是process status的缩写,使用ps命令可以列出系统当前的进程
ps -A
过滤
>ps -A | grep xx
Cycript 命令:
进入到该进程下:
cycript -p 进程ID/名称
退出环境:
ctrl+d
如进入wbApp的环境下,可以获取一些变量来进行操作
cy# UIApp
#"<UIApplication: 0x126fc21e0>"
cy# UIApp.keyWindow
#"<WBAppWindow: 0x126fc7080; baseClass = UIWindow; frame = (0 0; 320 568); gestureRecognizers = <NSArray: 0x17444cc30>; layer = <UIWindowLayer: 0x174825100>>"
cy# #0x126fc7080
#"<WBAppWindow: 0x126fc7080; baseClass = UIWindow; frame = (0 0; 320 568); gestureRecognizers = <NSArray: 0x17444cc30>; layer = <UIWindowLayer: 0x174825100>>"
cy# UIApp.keyWindow.rootViewController
#"<TabBarRotateController: 0x126fc7850>"
cy# var root = UIApp.keyWindow.rootViewController
#"<TabBarRotateController: 0x126fc7850>"
cy# root.view = nil
上面命令执行完后 wbapp就直接黑屏了.
变量定义:
var 变量名 = 变量值
ObjectiveC.classes
获取某个App用到的所有类
*对象
eg: *UIApp
查看对象所有成员变量
查看某个view所有子view
xcode LLDB做法
po [self.view.window recursiveDescription];
cycript
[UIApp.KeyWindow recursiveDescription]
加上toString排版一下
[UIApp.KeyWindow recursiveDescription].toString()
筛选对象
choose(UIViewController)
工具
https://github.com/CoderMJLee/mjcript
~ scp ~/Desktop/mjcript.cy root@192.168.50.222:/usr/lib/cycript0.9/MJTool.cy
复制到手机路径下面.
@import MJTool
导入
cy# MJFrontVc() //获取最前面的VC
#"<LoginViewController: 0x137976c00>"
cy# MJInstanceMethodNames (#0x137976c00) ////获取某个对象的所有实例方法
cy# [#0x137976c00 onSignInClick:nil]