Cycript
- oc++,js,java的混合物.
- 可以用來探索mac/ios app.
iPhone上先安裝
adv-cmds
常用命令:
ps命令是process status的縮寫,使用ps命令可以列出系統(tǒng)當前的進程
ps -A
過濾
>ps -A | grep xx
Cycript 命令:
進入到該進程下:
cycript -p 進程ID/名稱
退出環(huán)境:
ctrl+d
如進入wbApp的環(huán)境下,可以獲取一些變量來進行操作
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
上面命令執(zhí)行完后 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]