概述

Cycript 是Objective-C++、ES(JavaScript)、Java等语法的混合物。

可以用来探索、修改、调试正在运行的Mac\iOS App。

通过Cydia安装Cycript,即可在iPhone上调试运行中的APP。

Cycript基本使用

开启
cycript 退出
ctrl + D 清屏
commond + R 调试App
cycript -p 进程ID
cycript -p 进程名称

要获取iPhone安装app进程ID,首先需要安装adv-cmds插件。执行ps -A指令。 可以通过ps -A | grep 关键词快查找。

如果想通过ps -A命令找到某个App的进程ID,一定先保证该App运行。

cycript常见语法

获取应用的程序的IUApplication
UIApp 定义变量
var 变量名 = 变量值 用内存地址访问对象
#内存地址 获取App所有的类
ObjectiveC.classes 查看对象的所有成员变量
*对象 递归打印View的所有子空间(跟LLDB一样的函数)
view.recursiveDescription().toString() 获取当前页面的所有控制器
choose(UIViewController)

mjcript框架

第三方框架mjcript对于常用的一些语法的封装更好的帮助我们调试

常用的方法

MJClassMethodNames(对象) // 获取一个对象所有的类方法
MJInstanceMethodNames(对象) // 获取一个对象的所有对象方法
MJFrontVc() // 当前控制器
MJAppId // BoundID
MJAppPath // App安装路径
MJCachesPath // 沙盒路径
MJSubviews(view) // 递归View的子view
MJRectMake(0, 0, 100, 200) // 创建CGRect

查找某个控件:可以通过MJSubviews控制器的view,然后根据属性进行定位比如UIButton的lable的text。但是中文文本在终端显示的Unicode编码。这个时候我们可以使用终端利用Python获取中文的Unicode编码再去搜索。



Cycript库的封装

封装Cycript文件

对于一些经常使用的代码我们可以将其封装在一个.cy文件中。

编写一个简单的test.cy文件。



exports参数是固定写法,用于向外提供接口。JS语法。

将编译写test.cy存放到手机目录/usr/lib/cycript0.9。可以直接鼠标拖拽方式也可以使用下面的命令拷贝方式

// 先开启端口映射
python tcprelay.py -t 22:10086
// 将Mac目录的test.cy 拷贝到IPhone的对应目录
scp -P 10086 test.cy root@localhost:/usr/lib/cycript0.9

通过Cycript进入调试某个App中。首先导入该cycript库。

调用调用库中的方法,库文件名.方法名() 库文件名.变量名

全局函数

对于上面通过exports方式的定义的函数都是私有函数,exports赋值给本文件对象,调用时通过文名调用。可以定义全局函数直接通过类名调用。



注意对于可变的一定使用函数获取,对于固定的值可以使用变量获取。因为脚本从上到下执行变量执行过后就是固定值。函数是当被调用的时候内部代码才回去执行,并且每次调用都是实时获取的。

最新文章

  1. IRandomAccessStream, IBuffer, Stream, byte[] 之间相互转换
  2. Intellij idea 设置svn 父目录文件显示状态颜色
  3. Android控件之圆形Button
  4. jmeter也有loadrunner一样的图像
  5. 解决JSP 不解析EL表达式
  6. NewRelicAgent(CustomAnalyticEvent.cxx.o), building for iOS simulator, but linking in object file built for OSX, for architecture x8(botched)
  7. linux yum install resource - epel
  8. STL的简介
  9. 【模拟】FOJ 2244 Daxia want to buy house
  10. Beta Scrum Day 2
  11. verilog学习笔记(2)_一个小module及其tb
  12. sklearn的kmeans测试
  13. jenkins的 git多分支自动构建
  14. C++多态等知识点
  15. MySQL 各级别事务的实现机制
  16. vue使用hightchats
  17. h1042 N!大数乘int
  18. Windows8连接网络后自动弹出Bing解决方法
  19. rdlc报表随笔心得 ,基本结构和一些表达式。
  20. 关于http响应状态码

热门文章

  1. bzoj1053题解
  2. .net API跨域
  3. spark出现BINLOG_FORMAT = STATEMENT
  4. NX二次开发-UFUN获取工程图视图边界线是否显示UF_DRAW_ask_border_display
  5. Mybatis笔记 - Mybatis框架简介
  6. 『BASH』——Hadex's brief analysis of "Lookahead and Lookbehind Zero-Length Assertions"
  7. 20130317 如何批量把文件名称写入txt文档
  8. 全球CMOS图像传感器厂商
  9. java oop第06章_异常处理
  10. vim 命令行模式 操作指令