iOS安全–使用Cycript进行运行时分析

Cycript是一个理解Objective-C语法的javascript解释器,这意味着我们能够在一个命令中用Objective-C或者javascript,甚至2者兼用。它能够挂钩正在运行的进程,能够在运行时修改应用的很多东西。使用Cycript有如下好处:

  • 1.我们能够挂钩正在运行的进程,并且找出正被使用的类信息,例如view controllers,内部和第3方库,甚至程序的delegate的名称。
  • 2.对于一个特定的类,例如View Controller, App delegate或者任何其他的类,我们能够得到所有被使用的方法名称。
  • 3.我们能够得到所有实例变量的名称和在程序运行的任意时刻实例变量的值。
  • 4.我们能够在运行时修改实例变量的值。
  • 5.我们能够执行Method Swizzling,例如替换一个特定方法的实现。
  • 6.我们可以在运行时调用任意方法,即使这个方法目前并不在应用的实际代码当中。

首先我们要再设备上面安装Cycript。

然后我们尝试挂勾桌面:cycript -p SpringBoard ,并弹出一个窗口。

alert-show

 

我们还可以控制截屏,这个可以通过上一篇讲的class-dump-z导出头文件,找到截屏的方法。

screen-shot我们会发现屏幕闪的一下,一张图片就保存下来了。

当然除了这个还可以对进行运行的应用进行分析,以QQ为例:

cycript-QQ从上面我们可以看到,我们可以得到这个应用的delegate,修改应用桌面提示数字,还可以找出keyWindow。 keyWindow是一个用来接受用户交互(例如点击事件)的window,找出当前可见的view controller,并让其不可见。

同时我们还可以打印出它有哪些方法:

printQQBarMethod

更多关于Cycript的使用方法可以参考:

http://iphonedevwiki.net/index.php/Cycript_Tricks

http://www.cycript.org/ 

本文链接:http://www.alonemonkey.com/ioss-cycript.html

一条评论

  1. 张国林

    dlopen(/usr/lib/libcycript.dylib, 5):Library not loaded: /System/Library/PrivateFrameworks/JavaScriptCore.framework/JavaScriptCore 请问这个怎么解决啊 打什么 cycript通过Cydia安装了

Comments are closed.