cycript是大神saurik开发的一个很强大的工具,能够让开发人员在命令行下和应用交互,在执行时查看和改动应用。它确实能够帮助你破解一些应用,但我认为这个工具主要还是用来学习其它应用的设计(主要是UI的设计及实现)。

这个工具使用了Objective-C和Javascript的混合模式,能够实时的和应用交互甚至改动应用。它的网址请猛戳这里。在官网上能够下载到完整的软件包。使用的方式有两种,一种是在越狱的设备上通过MobileSubstrate加装,这样能够在全部的应用里使用;还有一种是通过静态库的方式把cycript集成到自己的应用,这样做不要求越狱,当然也仅仅能在自己的应用内使用了。

在越狱模式下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设备上

3. 用dpkg -i来安装deb包

4. 执行cycript,假设出现cy#的符号,那么就是安装完毕了

安装之后自然是使用,这个用法网上讲得比較具体了,非常多拿的还是支付宝的样例,所以在这里顺便提醒一下小伙伴们,如今设备集成了越来越多的应用,重要性和不可替代性都是越来越高,所以设备不妨不要越狱,安全第一嘛。

cycript的使用方法上主要是注入你关注的那个应用的线程,然后就能够获得app,获得window,慢慢去获得viewController,逐步逐步拨开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_ENABLECYListenServer(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的框架有足够的了解,还有一方面也须要积累经验。

转载于:https://www.cnblogs.com/hrhguanli/p/3799001.html

iOS执行时工具-cycript相关推荐

  1. iOS常用开发工具及第三方框架

    iOS开发中使用到的工具,以及为了避免重复造轮子,也为了更快.更有效的地进行开发,常常引用的第三方框架,像网络请求的AFNetworking,数据持久化的FMDB,请求提示符MJRefresh,还有数 ...

  2. iOS逆向工程Mac工具篇

    class-dump 简介 用于dump目标对象的class信息.它利用OC语言的runtime特性, 将存储在Mach-O可执行文件中的头文件信息提取出来, 并生成对应的.h文件. class-du ...

  3. iOS模拟器管理工具simctl了解一下

    在开发iOS app时,模拟器扮演着十分重要的角色.模拟器可以帮助我们快速.简单的在开发过程中进行测试.针对不同分辨率.不同系统的设备进行适配.苹果提供的模拟器入门文档几乎包含了所有通过图形界面来控制 ...

  4. php及时提醒反馈,php,实时交互_请问PHP脚本执行时如何实时提供反馈,php,实时交互 - phpStudy...

    请问PHP脚本执行时如何实时提供反馈 有两个页面一个上传EXCEL文件,另一个接受这个EXCEL文件并处理,下面是这个页面处理时显示的内容,可是每次都要等程序完全运行才会显示.有时候时间太长没有反馈, ...

  5. iOS运行时-使用Runtime向Category中添加属性以及运行时介绍

    前言 了解OC的都应该知道,在一般情况下,我们是不能向Category中添加属性的,只能添加方法,但有些情况向,我们确实需要向Category中添加属性,而且很多系统的API也有一些在Category ...

  6. APP加密,ios代码混淆工具,虚拟化技术 适用于移动应用程序的虚拟化加密软件

    概述: KiwiVM是用于移动应用程序的虚拟化加密软件. 它基于Clang编译器扩展,并且在编译项目时虚拟化指定的函数.借助自定义CPU指令的功能,一旦对代码进行加密并且从未解密,攻击者将无法恢复代码 ...

  7. Oracle设置sql执行时的并行度和强制走索引

    目录 1. 设置sql执行的并行度 2. 设置sql执行时强制走索引 1. 设置sql执行的并行度 在Oracle表中数据量比较大时,sql查询的速度会比较慢,这时候一种解决办法就是设置sql语句执行 ...

  8. window定时执行html,定时执行、定时执行任务工具 增强Windows自带的计划任务功能...

    <定时执行任务工具>名字已经将功能写的很清楚了,其实它就是一个Windows自带的计划任务功能的增强版,不过设置起来非常简单,没有计划任务那样烦琐.新手小伙伴可能驾御不了.. <定时 ...

  9. iOS开发mac工具

    前言   iOS工程师一直都是那么的高逼格,用的是Mac电脑,耍的是iPhone手机,哇咔咔~~   但是,作为一名iOS开发工程师,我们除了高逼格外,还必须是全能的.你不会点UI设计.不会点后台语言 ...

最新文章

  1. 三、开发调试应用程序
  2. Redis数据库操作指令
  3. 为什么说 Java 是按值传递的?
  4. HTTP调试工具:Fiddler 介绍二
  5. WordPress 如何通过ID获取文章标题、内容等信息
  6. 在ODM公司要不要跳槽到创业公司
  7. 【算法分析与设计】浅析算法复杂度
  8. Origin绘制热力图
  9. 计算机窗口设计java实验,Java银行取款异常处理计算器设计图形用户界面设计实验报告.doc...
  10. SQL中的「规则」 constraint 与「约束」 rule 的区别。
  11. pojo vo bo dto javabean
  12. F5刷新的时候只刷新里面的内联框架里面的页面
  13. paip.提升开发效率---事件化V0829
  14. 拉格朗日插值法_Lagrange、Newton、分段插值法及Python实现
  15. MySQL 入门(十)—— 数据操作
  16. Selenium调用使用360浏览器,QQ浏览器,遨游浏览器,猎豹浏览器,Chromium
  17. Macbook OBS 录制系统声音
  18. Android聊天软件开发(基于网易云IM即时通讯)——发送图片消息(五)
  19. 【Matlab】求解函数导数
  20. 微信公众平台开发(56)优惠券

热门文章

  1. python离线安装包_Python2.7如何离线安装包
  2. C++ 11 深度学习(三)范围for、new内存动态分配、nullptr
  3. win7 蓝牙4.0 ble驱动_初识物联网无线通信技术之蓝牙4.0BLE协议栈
  4. java笔试题_Java面试才到笔试就没有然后了?快来签收,高频笔试57题及解答
  5. 长见识:你真的知道C语言里extern quot;Cquot; 的作用吗?
  6. 永恒之塔修改服务器,[搬运工]永恒之塔单机版7.8 德国最新服务端
  7. 日照职业技术学院计算机怎么样,日照职业技术学院宿舍条件怎么样 住宿环境好不好...
  8. zbrush 添加纹理贴图_想学习3D游戏模型,3Dmax、MAYA和ZBrush都需要掌握吗?
  9. java ssm 多租户_(十一)java B2B2C 源码 多级分销springmvc mybatis多租户电子商城系统- SSO单点登录之OAuth2.0登录流程(2)...
  10. java读取文件并显示_JAVA读取本地文件并显示到页面中