cycript是大神saurik开发的一个很强大的工具,可以让开发人员在命令行下和应用交互,在执行时查看和改动应用。它确实可以帮助你破解一些应用,但我认为这个工具主要仍是用来学习其它应用的设计(主要是UI的设计及实现)。c++
这个工具使用了Objective-C和Javascript的混合模式,可以实时的和应用交互甚至改动应用。它的网址请猛戳这里。在官网上可以下载到完整的软件包。使用的方式有两种,一种是在越狱的设备上经过MobileSubstrate加装,这样可以在所有的应用里使用;还有一种是经过静态库的方式把cycript集成到本身的应用,这样作不要求越狱,固然也仅仅能在本身的应用内使用了。xcode
在越狱模式下cycript的安装:安全
1. 在cydia下安装openSSH,这样可以确保能用SSH登陆到iOS设备上,假设你已经安装过了,可以不用继续安装了微信
2. 用sftp上传下载的cycript_0.9.501_iphoneos-arm.deb和libffi_1-3.0.10-5_iphoneos-arm.deb安装包到iOS设备上app
3. 用dpkg -i来安装deb包框架
4. 执行cycript,假设出现cy#的符号,那么就是安装完毕了iphone
安装以后天然是使用,这个用法网上讲得比較具体了,很是多拿的仍是支付宝的样例,因此在这里顺便提醒一下小伙伴们,现在设备集成了愈来愈多的应用,重要性和不可替代性都是愈来愈高,因此设备不妨不要越狱,安全第一嘛。工具
cycript的使用方法上主要是注入你关注的那个应用的线程,而后就可以得到app,得到window,慢慢去得到viewController,逐步逐步拨开UI的面纱,这个在学习经典应用的UI时真的是无上的利器!学习
下图是我在跟踪微信的UI时的样子,大体上方向就是这样逐步深刻。ui
上面的样例是在越狱的机器上安装cycript,而后可以在随意的应用中使用。
另外一种使用方法是在开发过程当中,把cycript的framework集成在应用中,这样可以用于实时调整UI的參数,而且不要求机器越狱。如下给出一个最最简单的样例:
1. 从官网下载cycript的包,是一个压缩文件,里面包含三个cycript.framework,cycript.lib和cycript
2. xcode里面新建一个target,只用最简单的singleViewApplication建立一个空白的应用,这时界面应该是一片清纯
3. 加入�cycript框架以及依赖,加入�cycript.framework框架是应有之义,但这个框架还需要依赖库的支持,包含JavaScriptCore和libstdc++;这里需要注意的是libstdc++是有版本号要求的,必须是libstdc++.6.0.9.dylib,例如如下图所看到的
4. 设置编译选项
为了解决libstdc++的兼容问题,还需要在BuildSetting页设置"Other Linker Flags",加入�-lstdc++;另外还有“C++ Standard Library”,确保选择了“Compiler Default”。假设没有选择特定的libstdc++版本号并且正确配置编译器选项的花,在iOS7下连接会失败的,这一点请务必注意。
5. 改动代码,打开cycript监听port
这个最好用一个宏来包一下,比方用:CYCRIPT_ENABLE
#ifdef CYCRIPT_ENABLE CYListenServer(8888); #endif
这里的8888就是cycript的监听port,为了让这句代码起做用,请把CYCRIPT_ENABLE在添�到预设宏里面。
6. 执行模拟器,这里另外一个要说明,眼下仅仅支持64bit的,不能使用32bit的模拟器,这个也需要配置一下,而后选择正确的模拟器执行,应用就可以跑起来了,仍然是一片清纯的UI
7. 进入cmd界面,切换路径到cycript包的解压文件夹下,执行./cycript -r 127.0.0.1:8888
当中,127.0.0.1是你的模拟器或者设备地址,8888就是你代码里面配置的监听接口,假设正常,会进入cycript的REPL,这时就可以现场改动一些UI了,比方把白色背景改为红色:
此时的UI应该就变成了红色背景。
cycript的使用基本方法就是这样了,剩下的就是怎样使用的问题了,这个一方面需要对iOS的框架有足够的了解,还有一方面也需要积累经验。