简介

Cycript允许开发人员探讨和修改iOS和Mac OS X上运行的应用程序。
Cycript是一个理解Objective-C语法的javascript解释器,它能够挂钩正在运行的进程,能够在> 运行时修改应用的很多东西。
  1. 1. 能够挂钩正在运行的进程,并且找出正被使用的类信息,例如view controllers,内部和第三方库,甚至程序的delegate的名称。
  2. 2. 对于一个特定的类,例如View Controller, App delegate或者任何其他的类,我们能够得到所有被使用的方法名称。
  3. 3. 能够得到所有实例变量的名称和在程序运行的任意时刻实例变量的值。
  4. 4. 能够在运行时修改实例变量的值。
  5. 5. 能够执行Method Swizzling,例如替换一个特定方法的实现。
  6. 6. 可以在运行时调用任意方法,即使这个方法目前并不在应用的实际代码当中。
Cycript安装

在这里下载
在这里阅读所有Cycript诡计

先看看怎么用Cycript干点坏事吧

1. 给应用弹一个莫名其妙的alert

ssh登陆你的手机(如果不会,上一篇有~)

找一个app

这里我找的是以前做的一个app

打开网易新闻 查看精彩图片

print

打开网易新闻 查看精彩图片

这样知道进程号是466

hock住

打开网易新闻 查看精彩图片

如果你看到出现了cy#,说明你可以开始编写Cycript代码了

alert

打开网易新闻 查看精彩图片

分享之前我还是要推荐下我自己建的iOS学习群:656315826,史上第一个iOS5000人群,都是学iOS开发的,如果你正在学习iOS,小编欢迎你加入,今天分享的这个案例已经上传到群文件,大家都是iOS党,不定期分享干货(只有iOS开发相关的),包括我自己整理的一份2017最新的iOS资料和零基础入门教程,欢迎初学和进阶中的小伙伴。

打开网易新闻 查看精彩图片

2. 探索一个app

打开网易新闻 查看精彩图片

调用一下:

打开网易新闻 查看精彩图片

输出结果:

打开网易新闻 查看精彩图片

是不是觉得发生了很可怕的事情?该有的都被打印出来了。

你还可以通过试探的方式找出每一个Controller的名字,例如:

insert

打开网易新闻 查看精彩图片

print

打开网易新闻 查看精彩图片

insert

打开网易新闻 查看精彩图片

print

打开网易新闻 查看精彩图片

insert

打开网易新闻 查看精彩图片

print

打开网易新闻 查看精彩图片

这样,我们就找到了『我的』页面所属Controller。

查看所有的方法:

打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片

改个标题试试:

打开网易新闻 查看精彩图片

效果如下:

打开网易新闻 查看精彩图片

试想一下,如果MeViewController中或者LoginViewController中有一个方法叫getUserInfo,那么通过Cycript就可以轻而易举的拿到用户信息。

不过Cycript在这里最主要的作用还是偷窥APP和调试APP。
当然,好玩的方法还有很多。

知道了Cycript的可怕,在有重要信息藏在代码中的时候,我们也得学会如何放置Cycript修改运行时。