iOS执行时工具-cycript

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_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的框架有足够的了解,还有一方面也须要积累经验。

iOS执行时工具-cycript

时间: 2024-10-29 19:08:33

iOS执行时工具-cycript的相关文章

iOS运行时工具-cycript

cycript是大神saurik开发的一个非常强大的工具,可以让开发者在命令行下和应用交互,在运行时查看和修改应用.它确实可以帮助你破解一些应用,但我觉得这个工具主要还是用来学习其他应用的设计(主要是UI的设计及实现). 这个工具使用了Objective-C和Javascript的混合模式,可以实时的和应用交互甚至修改应用.它的网址请猛戳这里.在官网上可以下载到完整的软件包.使用的方式有两种,一种是在越狱的设备上通过MobileSubstrate加装,这样可以在所有的应用里使用:另一种是通过静态

IOS -执行时 (消息传递再探究)

一 消息查找优化 至此.我们已经明确了Objective-c中大致的消息传递过程,我们发现假设每次函数调用都经历上面的过程(.那函数调用的效率就会非常低,尤其是当类的继承层次非常多的时候.它须要一层层的查找其效率将会更低,为了加快查找调用的速度,Objective-c对消息查找做了优化. 从前一节的类对象我们知道它含有一个?struct objc_cache *cache成员,这个缓存就是为了提高查找的效率的. 每一个类都有自己的缓存,同一时候包含继承的方法和在该类中定义的方法. 当我们在查找I

iOS第三方库管理工具

作者:彷徨iOS 原文地址1:http://iostree.sinaapp.com/?p=78 原文地址2:http://blog.csdn.net/wzzvictory/article/details/18737437 iOS第三方库管理工具Pods 很多使用第三方库都觉得超爽,可以省略很多代码,大大节省了我们的开发时间,但是,对于很多初学者来说,使用起来超级麻烦,有可能每个第三方库需要的配置步骤都不一样,并且很容易出错.在此我给大家分享一个非常好用的一款工具-Pods,分享之前我在网上查阅了

iOS 逆向工程(工具介绍)- 学习整理(转)

一.class-dump 简介:顾名思义,就是用来导出目标对象的class信息的工具,私有方法声明也能导出来. 原理:利用 Objective-C语言的 runtime 特性,将存 在Mach-O 文件中的头文件信息提 出来,并生成对应的 .h 文件. 使用方法:1,下载然后将class-dump 复制到" /usr/bin"目录下.2,执行sudo chmod 777 /usr/bin/class-dump"命令赋予其执行权限.3,class-dump执行: Objecti

iOS代码覆盖率测试工具

基于lcov-1.11的:CodeCoverage4iOS 阅读目录 环境准备 Xcode工程配置 构建并安装程序 收集代码覆盖率 过滤结果 合并多个Coverage.info?件?成覆盖率报告: 参考文献 iOS code coverage test tool. 基于lcov-1.11的iOS代码覆盖率测试工具,适用与iOS真机与模拟器. 环境准备 Mac OS X :10.8.5+ 建议10.9 Xcode :5.0+ 建议6.1 回到顶部 Xcode工程配置 拷贝CodeCoverage4

iOS执行时与method swizzling

C语言是静态语言,它的工作方式是通过函数调用,这样在编译时我们就已经确定程序怎样执行的.而Objective-C是动态语言,它并不是通过调用类的方法来执行功能,而是给对象发送消息,对象在接收到消息之后会去找匹配的方法来执行.这样的做法就把C语言在编译时的工作挪到了执行时来做,能够获得额外的灵活性. 在Objective-C中有个@selector,在非常多地方被翻译成"选择子".实际上,对于类的实例对象来说,类的方法是用一个数字来代表的,并不是是我们看到的一个长长的带着:这个字符的一串

[Erlang危机](5.0)执行时指标

原创文章.转载请注明出处:server非业余研究http://blog.csdn.net/erlib 作者Sunface 联系邮箱:[email protected] Chapter 5 Runtime Metrics 执行时指标(Runtime Metrics) One of the best selling points of the Erlang VM for production use is how transparent it can be for all kinds of intr

ios开发时,在Xcode中添加多个targets进行版本控制

  在ios开发时,我们经常会遇到对同一个app开发多个版本(Pro.Lite.Free)的情况,这里就涉及到xcode里通过添加多个targets来进行版本控制的问题了,下面就简单说明一下: 点击左侧的工程名称,右侧会出现PROJECT和TARGETS,点击你现在的target,假如叫A,右键弹出菜单中,选择Duplicate,复制一个相同的target,复制的target一般叫A copy,A copy和A的设置(编译条件.源文件.资源文件)完全一样,此时你可以根据需要修改A copy的编译

iOS开发常用工具类

iOS开发常用工具类(提高开发的工作效率) 前言 作为一个开发者应该学会去整理收集开发常用的工具类,这些复用的工具可以在项目开发中给你很大程度提高你的工作效率.难道你不想早点完成工作,然后出去撩妹.陪女朋友或者回家陪老婆孩子吗?反正我想早点回家??. 一.常用的宏定义 善于利用宏在开发中过程中会减少很多工作量比如定义开发过程中的常用尺寸,这样在后续开发中不用为了改一个相同尺寸而满世界的去找这个尺寸在哪用到了.宏定义用的很广泛,例如屏幕的宽高,网络请求的baseUrl等等下面是自己整理的一些示例: