1.Cycript介绍
Cycript
是Objective-C++
、ES6(Javascript)
、Java
等语法的混合物。- 可以用来探索、修改、调试正在运行的Mac、iOS APP
- 官网: http://www.cycript.org
- 文档: http://www.cycript.org/manual
- 通过Cydia安装Cycript,即可在iPhone上调试运行中的App
2.Cycript开启和关闭
开启
- cycript
- cycript -p 进程ID
- cycript -p 进程名称
1 2 3 4 5
~ root# cycript cy# 10 + 10 20 ~ root# cycript -p 1837 ~ root# cycript -p neteasemusic
查看进程必须装的ps命令
- Cydia安装adv-cmds
- ps命令是process status的缩写,使用ps命令可以列出系统当前的进程。
1 2 3 4
// 列出所有的进程 ps -A // 搜索关键词 ps -A | grep 关键词
- 关闭
- control + d 退出
- control + c 取消输入
语法
- UIApp
- [UIApplication sharedApplication]
- 定义变量
- var 变量名 = 变量值
- 用内存地址获取对象
- #内存地址
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
~ root# cycript -p neteasemusic cy# [UIApplication sharedApplication] #"<NMApplication: 0x10b50a730>" cy# UIApp #"<NMApplication: 0x10b50a730>" cy# var app = UIApp #"<NMApplication: 0x10b50a730>" cy# var win = UIApp.keyWindow #"<OTTouchObservingWindow: 0x10b5823c0; baseClass = UIWindow; frame = (0 0; 375 667); gestureRecognizers = <NSArray: 0x28155ca20>; layer = <UIWindowLayer: 0x281cca860>>" cy# UIApp.keyWindow.rootViewController #"<NMRootNavigationController: 0x10c197600>" cy# #0x10b5823c0 #"<OTTouchObservingWindow: 0x10b5823c0; baseClass = UIWindow; frame = (0 0; 375 667); gestureRecognizers = <NSArray: 0x28155ca20>; layer = <UIWindowLayer: 0x281cca860>>" cy# #0x10b5823c0.rootViewController #"<NMRootNavigationController: 0x10c197600>"
- ObjectiveC.classes
- 已加载的所有OC类
- 查看对象的所有成员变量
- *对象
- 递归打印view的所有子控件(跟LLDB一样的函数,lldb在断点调试那里)
- [UIApp.keyWindow recursiveDescription] oc
- view.recursiveDescription().toString() js
- 筛选出某种类型的对象
- choose(UIViewController)
- choose(UITableViewCell)
- UIApp
封装Cycript
- 将客户端(Mac)文件复制到服务器端(iPhone)
1
scp -P 10010 ~/Documents/iOS/JVTools.js root@localhost:/usr/lib/cycript0.9/JVTools.cy
- 导入JVTools.cy文件
1 2 3
cy# @import JVTools // JVTools是在cycript0.9中 // com是cycript0.9中的文件夹,所以要com.JVTools cy# #import com.JVTools
3.安装Reveal
Cydia安装Reveal2Loader插件
设置 -> Reveal -> Enabled Applications,选出可以测试的App.
官网下载Reveal
- 如果试用,发邮件获取试用码就可以获得14天试用。
- HELP -> Show Reveal Library in Finder -> ios-arm64_armv7 -> RevealServer.framework,复制RevealServer。
- 将复制RevealServer到手机/Library/Frameworks/RevealServer.framework,可以通过iFunbox直接粘贴。
1 2 3 4
// 终端粘贴 $ scp -P 10010 /Users/jovins/Jovins/RevealServer root@localhost:/Library/Frameworks/RevealServer.framework/ // 重启手机桌面, 这步要连接手机 root# killall SpringBoard