Cycript支持OC,C++,Java语法,笔者直接使用Monkey集成(自带的),可以找到monkey中相关的代码,其配置的端口是6666
image.png
通过Monkey工程运行目标APP到手机上,然后在终端输入:cycript -r 192.168.1.168:6666
即可进入调试环境---查看附加进程的界面数据等。
Cycript高级用法及遇到问题
Cycript的高级用法就是,将常用的如
NSHomeDirectory()
,
UIApp.keyWindow.rootViewController
,
UIApp.keyWindow.recursiveDescription().toString()
,
[[[UIWindow keyWindow] rootViewController] _printHierarchy].toString()
,
[[UIApp keyWindow] _autolayoutTrace].toString()
等等封装成.cy
文件,然后将其导入工程,使libcycript.dylib
自动去加载.cy
文件,下面有讲导入过程。
cycript -r 192.168.1.168:6666封装成脚本带来的问题
有时候我们为了图方便,我们把cycript -r 192.168.1.168:6666
封装成了脚本,设置环境变量,但是我们大多时候是在家和公司办公的,所以更换了WiFi可能IP地址就不一样了,导致sh cyLogin.sh
链接失败。
MonkeApp安装的第三方APP,cycript的高级用法,Monkey自带的APPID,pviews(),pvcs()等不起作用
image.png先不要着急,通过上图可以知道,既然是通过
url
,放到plist
中的,那是不是会有下载的代码,通过全局搜索(.url
),可以找到MDCycriptManager
类中实现了下载的逻辑。断点查看,发现其下载失败(这就解释了其不起作用的原因)。image.png image.png
然后配了Allow Arbitrary Loads
为 YES
发现还是没有用,那是不是Xcode
连调导致的,又把Xcode
断掉,使用iTerm
连接调式,发现还是不行。但是又不想坐以待毙,难道是它这url打不开,使用浏览器打开,发现OK。(怀疑人生,这么好的快捷方式难道我不配使用??)
放弃可不是我的风格,于是根据url链接找到了它的下载地址,自动下载不成,那我可以手动下载MS.cy
和md.cy
,通过手动导入(自己封装的导入方式一样)点击这里去下载
将下载的MS.cy
和md.cy
两个文件拖到Config目录下,按下图:“手动导入方式”配置,将目标APP放到TargetApp文件夹中,然后运行到手机上。当然如果还是嫌麻烦,把这两个.cy文件上传到自己的服务器,然后把plist里面的url替换掉。
打开终端,输入:cycript -r 192.168.2.135:6666
,然后@import MS
,@import md
,再试一下输入pviews()
,如下图,成功使用快捷方式。
网友评论