实时调试(电脑一直跳出实时调试)
实时调试(电脑一直跳出实时调试)是由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中的指令。
知识暮江吟描绘了一幅怎样的画面关于到现在暮江吟描绘了一幅怎样的画面这个话题相信很多小伙伴都是非常有兴趣了解的吧因为这个话题也是近期非常火热的那么既然现在大家都想要知道暮江吟描绘了一幅怎样的画面小编也是到网上收集
暮江吟古诗的意思(古诗暮江吟讲解及赏析)暮江吟古诗的意思(古诗暮江吟讲解及赏析)暮江吟唐。白居易一道残阳铺水中,半江瑟瑟半江红。可怜九月初三夜,露似真珠月似弓。作者简介白居易,字乐天,号香山居士,又号醉吟先生,是唐代伟大
暮江吟古诗意思(暮江吟古诗的全文翻译)暮江吟古诗意思(暮江吟古诗的全文翻译)同学们,大家好,这里是梁老师语文补给站,给你的语文学习充满能量。今天,我们共同来学习部编版四年级语文上册第九课古诗三首。当我们看到这夕阳西下的
暮江吟古诗意思(暮江吟古诗意思翻译)暮江吟古诗意思(暮江吟古诗意思翻译)原句来源唐诗素描曾冬傍晚,太阳轻松地展开圆圆的身子,跃入了水中,濯洗一天的疲惫。这个不识水性的顽童,把最后几缕光芒洒满水面,就慢慢地沉下去了。赏
暮江吟古诗的意思(暮江吟古诗意思翻译)暮江吟古诗的意思(暮江吟古诗意思翻译)暮江吟唐白居易。m4a038来自阿皮早上好暮江吟是唐代诗人白居易创作的一首七绝。这是一首写景佳作。诗人选取了红日西沉到新月东升这一段时间里的两
暮江吟的意思(暮江吟诗意最简单的)暮江吟的意思(暮江吟诗意最简单的)了本讲中国二十四节气知识的小册子,翻到白露那一章,开头就放了一首白居易的暮江吟,我们小时候曾经学过这一首诗。这一首诗是白氏七绝力作,被唐宋诗醇赞为
暮江吟古诗意思(暮江吟这首诗的翻译)暮江吟古诗意思(暮江吟这首诗的翻译)同学们,大家好,这里是梁老师语文补给站,给你的语文学习充满能量。今天,我们共同来学习部编版四年级语文上册第九课古诗三首。当我们看到这夕阳西下的美
科普下而望幸焉的焉是什么意思出自哪关于到现在而望幸焉的焉是什么意思出自哪这个话题,相信很多小伙伴都是非常有兴趣了解的吧,因为这个话题也是近期非常火热的,那么既然现在大家都想要知道而望幸焉的焉是什么意思出自哪,小编也
路漫漫其修远兮吾将上下而求索的意思(路漫漫其修远兮的寓意)路漫漫其修远兮吾将上下而求索的意思(路漫漫其修远兮的寓意)很多人年少时都将屈原那句路漫漫其修远兮,吾将上下而求索作为座右铭,理想高远,壮志凌云。但经历了人生蹉跎,看透了世态炎凉,饱
路漫漫其修远兮吾将上下而求索的意思(女生说路漫漫其修远兮的意思)路漫漫其修远兮吾将上下而求索的意思(女生说路漫漫其修远兮的创千岭之松)很多人年少时都将屈原那句路漫漫其修远兮,吾将上下而求索作为座右铭,理想高远,壮志凌云。但经历了人生蹉跎,看透了
无论总是造句(无论总造句简单)无论总是造句(无论总造句简单)最近,一位语文老师将孩子平时造的句子贴出来,网友看后笑翻了!1题目一边一边小朋友写他一边脱衣服,一边穿裤子。老师批语他到底是要脱还是要穿啊?2题目其中
正方体的特征(长方体和正方体的表面积公式)正方体的特征(长方体和正方体的表面积公式)1两个面相交的线叫做棱,三条棱相交的点叫做顶点。2长方体相交于同一顶点的三条棱的长度,分别叫做它的长宽高。3长方体的特征面有六个面,都是长
正方形面积公式(正方形面积公式对角线)正方形面积公式(正方形面积公式对角线)长方形,是有一个角是直角的平行四边形叫做长方形。也定义为四个角都是直角的平行四边形。正方形的两组对边分别平行,四条边都相等四个角都是90对角线
长方体的特征(长方体和正方体知识点)长方体的特征(长方体和正方体知识点)1两个面相交的线叫做棱,三条棱相交的点叫做顶点。2长方体相交于同一顶点的三条棱的长度,分别叫做它的长宽高。3长方体的特征面有六个面,都是长方形(
长方体的特征(长方体与正方体的手抄报)长方体的特征(长方体与正方体的手抄报)人教版六年级数学下册第6单元立体图形的认识与测量(2)主要是在复习立体图形,表面积,体积的概念,表面积,体积的计算公式及推倒应用的基础之上,发
科普下old两个比较级的区别关于到现在old两个比较级的区别这个话题,相信很多小伙伴都是非常有兴趣了解的吧,因为这个话题也是近期非常火热的,那么既然现在大家都想要知道old两个比较级的区别,小编也是到网上收集
数学知识等腰三角形的周长怎么算关于到现在等腰三角形的周长怎么算这个话题相信很多小伙伴都是非常有兴趣了解的吧因为这个话题也是近期非常火热的那么既然现在大家都想要知道等腰三角形的周长怎么算小编也是到网上收集了一些与
科普下动词后面用什么的地得及使用区别是什么关于到现在动词后面用什么的地得及使用区别是什么这个话题,相信很多小伙伴都是非常有兴趣了解的吧,因为这个话题也是近期非常火热的,那么既然现在大家都想要知道动词后面用什么的地得及使用区
物理知识科普10KVA等于多少KW关于到现在10KVA等于多少KW这个话题,相信很多小伙伴都是非常有兴趣了解的吧,因为这个话题也是近期非常火热的,那么既然现在大家都想要知道10KVA等于多少KW,小编也是到网上收集
物理知识科普1ah等于多少度电关于到现在1ah等于多少度电这个话题,相信很多小伙伴都是非常有兴趣了解的吧,因为这个话题也是近期非常火热的,那么既然现在大家都想要知道1ah等于多少度电,小编也是到网上收集了一些与
物理知识科普1N等于多少Kg关于到现在1N等于多少Kg这个话题,相信很多小伙伴都是非常有兴趣了解的吧,因为这个话题也是近期非常火热的,那么既然现在大家都想要知道1N等于多少Kg,小编也是到网上收集了一些与1N
小米产地(小米手机产地)小米产地(小米手机产地)们生活中常见的食材,小米又称为粟,北方称谷子,把谷子脱壳以后,就变成金黄的小米了,它是最古老的栽培农作物之一,耐旱效果好,很多靠天吃饭的地方,都有大规模的小