实时调试(电脑一直跳出实时调试)
实时调试(电脑一直跳出实时调试)是由Cydia创始人Saurik推出的一款脚本语言,Cycript混合了OC、JavaScript语法的解释器,这意味着我们能够在一个命令中使用OC或者JavaScript,甚至两者并用。
它能够挂钩正在运行的进程,能够在运行时修改很多东西,关键,它还不会暂停我们的程序。
说白了,就是在运行时把程序弄得清清楚楚,然后好进行玩耍这个App。
Cycript 安装
官网:http://www.cycript.org/
下载SDK
在SDK中,你能找到一个可执行文件,没错,进去Terminal,执行命令 $./cycript就ok了
安装中的出错
如果报了这个错误,很明显需要Ruby 2.0。
1、查看当前Ruby版本$cd/System/Library/Frameworks/Ruby.framework/Versions/ $ls
2、创建一个符合目录的文件夹$sudomkdir-p/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/
3、copy 一个Ruby 2.0 进去,当然其中的2.3为你自己 ls 出来的Ruby版本sudoln-s/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/libruby.2.3.0.dylib/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/libruby.2.0.0.dylib
成功的标志:
配置zsh
当然,为了使用方便,我们需要将 Cycript 配置到 bash 当中去,这样就不用每次都去找这个可执行文件了。
找到你的 cycript 执行文件目录
在 .zshrc 文件中,配置 PATH
这就完成了,然后打开我们的 iterm2 ,直接输入$cycript
Cycript使用
说完了安装,接下来才是我们的重头戏,那就是使用了。我们来看看这个被我吹嘘的这么牛逼的东西到底有多么变态的好用。
前面说到,Cycript 可以勾住正在执行的进程,这是什么意思?
一、连接
我们的手机打开一个App的时候,就是开启了一个进程。没错,当App开启过后,Cycript 链接上我们的手机,就可以勾着这个App了。
当然勾住进程还是需要条件的
首先需要通过 ssh 连接手机
然后将 Cycript 中的 Cycript.framework 注入App当中
这两件事情,自己去做比较麻烦,这里介绍一个工具——MonkeyDev。它的使用的安装非常简单,可以去 git 上查看
https://github.com/AloneMonkey/MonkeyDev。
二、通过 MonkeyDev 创建一个工程,这里举例微信
打开iterm2,连接手机,输入:$cycript -r 192.168.0.0:6666(192.168.0.0为你手机WiFi的IP,可在设置中查看)
三、使用
因为 Cycript 兼容多种语法,所以OC也可以兼容,并且有tab可以提示。他的语法十分强大,这里举一些例子。
UIApp:打印出UIApplication对象
var keyWindow = UIWindow.keyWindow();:自定义变量,以后 keyWindow 就可以当做一个变量使用了
*#变量地址:打印出这个对象所有属性和相关信息
keyWindow.recursiveDescription().toString:查看层级关系,所有keyWindow上的层级就出来了,后面的toString()会格式化输出
choose(UIButton):打印所有UIButton类创建的对象脚本登录
整个 Cycript 的使用连接都已经介绍完了。为了养成一个使用脚本的习惯,还有方便记忆和使用,我们最好把登录连接写到脚本当中去。
1、在home目录专门创建一个文件夹,用来放自定义的脚本
2、创建一个 cylogin.sh 文件,在文件中写入登录命令
3、在 .zshrc 中配置环境变量
4、直接打开iterm2,执行脚本,完成
Cycript 带你装个B
1、微信转个账0.01元
2、Cycript 找到这个控件
3、直接搜索 "0.01",找到对象地址
4、拿到这个对象使用 #0x1264d5e0 ,修改text
Cycript 一些高级用法
一、演示
ObjectiveC.class:当前进程中所有的类
APPID:获取该应用的bundleID
pviews():当前所有的View
pvcs():当前所有的控制器,还有控制器的堆栈
pactions(#0x1382ffaa):对象的响应者,当然需要这个对象有响应者
rp(#0x1382ffaa):对象的响应者链条
有上面这些用法的原因是什么的,其实这些语法并不是 Cycript 提供的,只是 Monkey 帮我们进行的了封装。
可以看到我们刚才敲出来的语法,都是已经封装的命令。
二、自定义一个 .cy 文件封装
当然这些高级的语法,我们也是可以自定义的,自己做你想做的事儿。
1、Xcode中找到Empty,创建一个 .cy 文件,注意target
2、修改该文件的语法
3、copyfile中添加该文件,注意选中的target
4、书写你的自定义代码,这里是JavaScript//IIFE匿名函数自执行表达式 (function(exports){ JGAPPPATH=[NSBundlemainBundle].bundlePath; JGROOTVC=function(){ returnUIApp.keyWindow.rootViewController; } JGKEYWIND=function(){ returnUIApp.keyWindow; } JGGetCurrentVCFromRootVc=function(rootVC){ varcurrentVC; if([rootVCpresentedViewController]){ //视图被persent出来的 rootVC=[rootVCpresentedViewController]; } if([rootVCisKindOfClass:[UITabBarControllerclass]]){ //根视图如果是UITabBarController currentVC=JGGetCurrentVCFromRootVc(rootVC.selectedViewController); }elseif([rootVCisKindOfClass:[UINavigationControllerclass]]){ //根视图如果是UINavigationController currentVC=JGGetCurrentVCFromRootVc(rootVC.visibleViewController); }else{ //视为当前控制器 currentVC=rootVC; } returncurrentVC; }; JGCurrentVC=function(){ returnJGGetCurrentVCFromRootVc(JGROOTVC()); }; })(exports);
5、先@import,然后执行(直接执行会报错)
总结
Cycript 能在进程中调试程序,而且不需要暂停程序。
语法命令强大,基本集成了LLDB中的指令。
庐山旅游路线(庐山三日游攻略最佳路线)庐山旅游路线(庐山三日游攻略最佳路线)提示庐山天气变化较大,山上时雨时晴,建议带上雨衣雨伞。冬季下雪较多,山上温度较低,建议穿羽绒服或厚的登山服。另外,雪天路滑,建议穿防滑登山鞋,
2010年春节(2010年过年是几月几号)2010年春节(2010年过年是几月几号)2010年,孩子即将迈入中学校门,看着孩子健康茁壮成长,心中顿生感慨,虽然自己工作累一些,只要家庭和睦,也就无所谓了。从2010年的春晚中
过年几号(2022年春节是几月几号)过年几号(2022年春节是几月几号)假安排调休时间表202102090950海峡网2021年春节是几月几号?2021年过年是几号,2021年春节是哪天,春节放假安排表,现在小编就为
皮的部首(皮的部首是什么结构)皮的部首(皮的部首是什么结构)皮读音p部首皮笔画数5五笔HCI皮(p名词)兽皮hide带毛叫皮,去毛叫革。引申指人的皮肤或动植物表面的一层组织skin孤执皮帛。周礼大宗伯注虎豹皮。
最近好看的美国大片(比较好看的美国电影有哪些)最近好看的美国大片(比较好看的美国电影有哪些)旺达幻视从开头觉得很无趣搞不懂,到后面渐渐入戏。失去所有家人的旺达,带着曾经和幻视的梦想创造了属于他们的家园,让整个西景镇的人,一起陪
关于调整军人家属随军政策的意见(关于调整军人家属随军政策的意见)关于调整军人家属随军政策的意见(关于调整军人家属随军政策的意见)军属随军政策一直是军嫂和准军嫂们十分关注的事情,今天,针对大家普遍想要了解的热点问题,小编就来做一番解答。一最新的军
心态调整(自己心态不好怎么调整)心态调整(自己心态不好怎么调整)当你开始专注于一件事,那些微不足道的小事便会被你自动忽略,少了焦虑和纠结,人生也会慢慢地走向上坡路。有的人乐观积极,浑身散发激情与希望,有的人悲观消
m4a是什么格式(手机上把m4a转换为mp3)m4a是什么格式(手机上把m4a转换为mp3)大家好,今天分享一篇来自小白系统官网(xiaobaixitong。com)的图文教程。使用苹果手机的朋友不应不熟悉m4a格式。M4a是
突然戒烟(戒烟最难熬的是哪几天)突然戒烟(戒烟最难熬的是哪几天)吸烟有害健康,这句话人尽皆知,但真正有多少烟民因此戒掉香烟,远离香烟的诱惑呢?尽管每个烟盒上明确带有这样的标语,但对许多已经将吸烟当成习惯的老烟民来
方头大耳的意思(肥头大耳的意思是什么意思)方头大耳的意思(肥头大耳的意思是什么意思)201807231308小姐姐聊星座上升星座在巨蟹座上升星座,又称生辰星位。是指你出生的那一刻,东方地平线上正在升起的那一个星座,它是黄道
一月开什么花(112月各开什么花)一月开什么花(112月各开什么花)花友们养花的时候,有没有注意到其实咱们每个月都有盛放的花朵,代表着这个月的月份花,一年中有12个月,就有12种月份花,花友们出生的月份代表花卉是什
结婚30年是什么婚(结婚三十周年是什么婚?)结婚30年是什么婚(结婚三十周年是什么婚?)婚姻是一门博大精深的学问,也是需要耐心经验的,结婚三十年是人生中非常短暂的岁月,人生能有几个三十年呢。那么,婚后30年是什么婚?结婚三十
30年是什么婚(结婚三十周年送什么礼物好)30年是什么婚(结婚三十周年送什么礼物好)在结婚之后,根据婚姻维持的年限,人们会有金婚银婚的纪念日,银婚指的是结婚二十五周年的日子,那么通常把结婚多少年称为金婚呢?下面八宝网小编带
三十年是什么婚(结婚30周年是属于什么婚)三十年是什么婚(结婚30周年是属于什么婚)2020年元旦是我和我的先生结婚三十周年纪念日,也称珍珠婚纪念日。这一天我们过得很有意义。想想我们一晃眼间就老了,也应该停下忙碌的脚步,拂
巴瑶族为什么没有国籍(巴瑶族为什么不生活在陆地上)巴瑶族为什么没有国籍(巴瑶族为什么不生活在陆地上)提起巴瑶族很多人应该都是第一次听说过,巴瑶族是一个可以说是很玄幻的一个存在,因为他们一直在海上生活,他们没有国籍,世世代代都在海上
巴瑶族为什么不能上岸(巴瑶族真的不能上岸吗)巴瑶族为什么不能上岸(巴瑶族真的不能上岸吗)生活不止眼前的苟且,还有诗与远方。从那遥远海边,看那潮来潮去每当唱起这首歌,我就特别向往大海。相信很多人都喜欢海,更渴望能在海边拥有一处
巴瑶族为什么不能上岸(为什么不给巴瑶族国籍)巴瑶族为什么不能上岸(为什么不给巴瑶族国籍)晕船,晕车,晕飞机,相信大家都有听说过,但是晕陆地还真是第一次听到。在东南亚地区生活着一群人,他们长期生活在海上,每天都和浪花嬉戏,跟鱼
南美角蛙(角蛙新手入门饲养教程)南美角蛙(角蛙新手入门饲养教程)各位鱼友大家好,我是养鱼老道,更多观赏鱼饲养繁育实践知识,敬请大家关注。让我们一起简单养水,轻松养鱼!养鱼老道今天收到了鱼友寄来的一份小礼物,是一只
南美角蛙(角蛙要死的前兆)南美角蛙(角蛙要死的前兆)宠物,非它莫属!原创201806081145哗仔说鱼哗仔说鱼龙鱼怒吞小金蛙,得意洋洋把嘴擦。小蛙躲在龙鱼腹,思念爸爸和妈妈。欢迎大家再次回到有点人情味的哗
数学知识合并同类项法则关于到现在合并同类项法则这个话题相信很多小伙伴都是非常有兴趣了解的吧因为这个话题也是近期非常火热的那么既然现在大家都想要知道合并同类项法则小编也是到网上收集了一些与合并同类项法则相
数学知识同类项的定义是什么关于到现在同类项的定义是什么这个话题相信很多小伙伴都是非常有兴趣了解的吧因为这个话题也是近期非常火热的那么既然现在大家都想要知道同类项的定义是什么小编也是到网上收集了一些与同类项的
数学知识同类项是什么关于到现在同类项是什么这个话题相信很多小伙伴都是非常有兴趣了解的吧因为这个话题也是近期非常火热的那么既然现在大家都想要知道同类项是什么小编也是到网上收集了一些与同类项是什么相关的信