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. leetcode:Longest Palindromic Substring(求最大的回文字符串)

    Question:Given a string S, find the longest palindromic substring in S. You may assume that the maxi ...

  2. Intent相关

    Intent是什么? 翻译为:意图,目的(名词) 其实根本没必要管它是什么,看看它能做什么就好了. 不过后来我知道了,它就是个机制----通信机制-----android的许多组件间的交流要依赖它. ...

  3. fopen警告处理方式

    warning C4996: “fopen”被声明为否决的 问题:vs2005中编程时,遇到如下: warning C4996: “fopen”被声明为否决的. 解释:微软的警告,主要是那些都是C库的 ...

  4. Application Cache

    轉發處:http://www.cnblogs.com/blackbird/archive/2012/06/12/2546751.html HTML5提供了一系列的特性来支持离线应用: applicat ...

  5. 转——使用Axure制作App原型应该怎样设置尺寸?

    想用Axure设计一个 APP原型 放到真实的移动设备中演示,但不知道应该使用什么尺寸?若要解释清楚像素和分辨率需要的篇幅比较长,请大家参考百度百科.这里金乌直接给大家提供一个常用的移动设备尺寸列表, ...

  6. xshell 上传 下载文件

    借助XShell,使用linux命令sz可以很方便的将服务器上的文件下载到本地,使用rz命令则是把本地文件上传到服务器. sz用法: 下载一个文件 sz filename 下载多个文件 sz file ...

  7. Yii 1.1 URL两个笔记 同时支持PATH于GET路由和隐藏index.php

    同时支持PATH于GET格式路由(修改框架文件 简直坑) framework/web/CUrlManager.php parseUrl方法 第一行判断修改成 if($this->getUrlFo ...

  8. 关于使用base36的技巧 生成 优惠券兑换码的相关讨论

    关于优惠券的生成后台的制作问题,已经拖了很久了还没有合并.但是持续暴露出来的问题 也很多,我的代码以及前面的一个人的代码被持续review暴露出了大量问题.昨天晚上在

  9. HD1004Let the Balloon Rise

    Let the Balloon Rise Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...

  10. 全球各大运营商黑莓ROM官网下载链接汇总

    全球各大运营商黑莓ROM官网下载链接汇总: 先来关于8830的. 4.2.2.196的rom  8830EFS_PBr4.2.2_rel365_PL3.0.0.85_A4.2.2.196_Sprint ...