一、Cycript简介
Cycript允许开发者在iOS或Mac OS X上使用objective - c++和JavaScript语法的混合,通过具有语法高亮和tab补全功能的交互式控制台来探索和修改正在运行的应用程序。(它也可以在Android和Linux上独立运行,并提供对Java的访问,但不需要注入。) 更多官网介绍:http://www.cycript.org
图1:Cycript简介.png通过Cydia安装Cycript,即可在iPhone上调试运行中的APP。同时也需要安装adv-cmds,ps命名有用到。
图2:安装Cycript.png二、Cycript使用
以在“豆瓣”app上添加一个红色view为例
图5:添加红色视图.PNG1、Mac连接手机
可参考文章:iOS逆向之SSH:Mac远程登录iPhone
2、查看进程
- 首先确保已在Cydia安装了adv-cmds
- ps命令是process status的缩写,使用ps命令可以列出系统当前的进程
- 列出所有的进程
ps –A
或ps aux
- 搜索关键词
ps –A | grep 关键词
或ps aux | grep 关键词
其中“Frodo”是豆瓣app的进程名
3、Cycript的开启和关闭
- 开启:
cycript -p 进程ID
或cycript -p 进程名称
- 取消输入:
Ctrl + C
- 退出:
Ctrl + D
- 清屏:
Command + R
其中显示cy#
说明已经进入该运行的程序了
4、常用语法
- 获取根控制器
[UIApplication sharedApplication].keyWindow.rootViewController
- 创建view,并赋值给变量redView
var redView = [[UIView alloc] init];
- 设置redViewd的背景色为红色
#0x130c11920.backgroundColor = [UIColor redColor]
,其中0x130c11920
为redview的内存地址 - 设置redViewd的frame
#0x130c11920.frame = (100,100,150,200)
,其中0x130c11920
为redview的内存地址 - 根控制添加红色视图,
[#0x130a2cea0.view addSubview:#0x130c11920]
,其中0x130a2cea0
是根控制器的地址
执行后的效果,如上图图5所示。
三、Cycript文件库
我们可以将常用的Cycript代码封装在一个.cy文件中,如封装好的mjcript.cy文件,下载地址:https://github.com/CoderMJLee/mjcript
- 下载
mjcript.cy
文件,或者自己编写.cy
文件 - 将
.cy
文件存放到/usr/lib/cycript0.9
目录下 - 在
Cycript
中引用.cy
文件,并使用它提供的接口 - 引用命令
@import mjcript
,如获取当前控制器接口MJFrontVc()
四、实战小练习
- 进入“豆瓣”app,导入
mjcript.cy
文件,`@import mjcript - 查看当前控制器,
MJFrontVc()
- 递归打印view的层级结构,
MJSubviews()
- 通过python中,print指令,翻译UTF-8各式文本
- 找到对应的按钮,修改其文案
网友评论