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的更多相关文章

  1. iOS运行时工具-cycript

    cycript是大神saurik开发的一个非常强大的工具,可以让开发者在命令行下和应用交互,在运行时查看和修改应用.它确实可以帮助你破解一些应用,但我觉得这个工具主要还是用来学习其他应用的设计(主要是 ...

  2. IOS - 执行时 (多态)

    一 多态概述          多态指同一操作作用于不同的对象.能够有不同的解释.产生不同的执行结果.它是面向对象程序设计(OOP)的一个重要特征,动态类型能使程序直到执行时才确定对象的所属类.其详细 ...

  3. IOS -执行时 (消息传递 )

    一 函数调用概述      Objective-C不支持多重继承(同Java和Smalltalk),而C++语言支持多重继承. Objective-C是动态绑定,它的类库比C++要easy操作. Ob ...

  4. iOS逆向之一 工具的安装和使用

    iOS逆向之一-工具的安装和使用 最近在学习iOS安全方面的技术,有些东西就记录下来了,所有有了这篇文章.顺便也上传了DEMO,可以再这里找到这些DEMO的源码:dhar/iOSReProject 越 ...

  5. iOS第三方库管理工具

    作者:彷徨iOS 原文地址1:http://iostree.sinaapp.com/?p=78 原文地址2:http://blog.csdn.net/wzzvictory/article/detail ...

  6. iOS代码覆盖率测试工具

    基于lcov-1.11的:CodeCoverage4iOS   阅读目录 环境准备 Xcode工程配置 构建并安装程序 收集代码覆盖率 过滤结果 合并多个Coverage.info⽂件⽣成覆盖率报告: ...

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

    一.class-dump 简介:顾名思义,就是用来导出目标对象的class信息的工具,私有方法声明也能导出来. 原理:利用 Objective-C语言的 runtime 特性,将存 在Mach-O 文 ...

  8. iOS自动化测试驱动工具探索

    本文主要介绍了字节 iOS 自动化测试驱动工具的探索过程及实现原理 作者:字节跳动终端技术--陈友辉 一.背景 随着业务的扩张,单个 App 的功能越来越多,工程复杂度越来越高,每天MR可达上百次,代 ...

  9. iOS开发时,在Xcode中添加多个Targets进行版本控制

    在iOS开发中,很可能有以下场景:需要开发多个版本,或因需区分收费版,免费版,或因为网络环境需要区分测试版,发布版,或因渠道不同需要区分企业版,AppStore版等等.解决办法无非就是CheckOut ...

随机推荐

  1. linux系统中内存爆满之后会如何?

    在使用python写程序的时候,发现一个可以无限迭代的迭代器,从而可以直接将系统中的内存占满,那么占满之后会发生什么呢? 1. 创建无限迭代,生成列表,如下: [root@python ~]# pyt ...

  2. C++的类成员和类成员函数指针

    类成员函数指针: 用于访问类成员函数,和一般函数指针有区别. 类成员函数处理的是类数据成员,声明类成员函数指针的同时,还要指出具体是哪个类的函数指针才可以.调用时也要通过对象调用. 而对于类的静态成员 ...

  3. SpringMVC + Spring + MyBatis 学习笔记:遭遇order by 排序问题

    系统:WIN8.1 数据库:Oracle 11GR2 开发工具:MyEclipse 8.6 框架:Spring3.2.9.SpringMVC3.2.9.MyBatis3.2.8 用MyBatis写排序 ...

  4. 英语之idiom

    1 quick and dirty = Done or constructed in a hasty, approximate, temporarily adequate manner, but no ...

  5. 200 OK (from cache) 与 304 Not Modified

    解释: 200 OK (from cache)  是浏览器没有跟服务器确认,直接用了浏览器缓存: 304 Not Modified 是浏览器和服务器多确认了一次缓存有效性,再用的缓存. 触发区别: 2 ...

  6. Java实现中文字符串的排序功能

    package test; /** * * @Title 书的信息类 * @author LR * @version 1.0 * @since 2016-04-21 */ public class B ...

  7. 理解OAuth 2.0 -摘自网络

    OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版.                                      本文对OA ...

  8. js 发红包

    <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...

  9. cocos2d-x 3.2读取xml和json练习

    读取和生成xml文件: #include "tinyxml2/tinyxml2.h" using namespace tinyxml2; void HelloWorld::make ...

  10. Android之旅 笔记总结(一)

    一.Android入门 1.          Android操作系统的体系结构分为4层,由上而下依次是应用程序.应用程序框架.核心类库(包括Android运行时环境)和Linux内核. 2.     ...