iOS逆向系列-Cycript
概述
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赋值给本文件对象,调用时通过文名调用。可以定义全局函数直接通过类名调用。
注意对于可变的一定使用函数获取,对于固定的值可以使用变量获取。因为脚本从上到下执行变量执行过后就是固定值。函数是当被调用的时候内部代码才回去执行,并且每次调用都是实时获取的。
最新文章
- IRandomAccessStream, IBuffer, Stream, byte[] 之间相互转换
- Intellij idea 设置svn 父目录文件显示状态颜色
- Android控件之圆形Button
- jmeter也有loadrunner一样的图像
- 解决JSP 不解析EL表达式
- NewRelicAgent(CustomAnalyticEvent.cxx.o), building for iOS simulator, but linking in object file built for OSX, for architecture x8(botched)
- linux yum install resource - epel
- STL的简介
- 【模拟】FOJ 2244 Daxia want to buy house
- Beta Scrum Day 2
- verilog学习笔记(2)_一个小module及其tb
- sklearn的kmeans测试
- jenkins的 git多分支自动构建
- C++多态等知识点
- MySQL 各级别事务的实现机制
- vue使用hightchats
- h1042 N!大数乘int
- Windows8连接网络后自动弹出Bing解决方法
- rdlc报表随笔心得 ,基本结构和一些表达式。
- 关于http响应状态码
热门文章
- bzoj1053题解
- .net API跨域
- spark出现BINLOG_FORMAT = STATEMENT
- NX二次开发-UFUN获取工程图视图边界线是否显示UF_DRAW_ask_border_display
- Mybatis笔记 - Mybatis框架简介
- 『BASH』——Hadex's brief analysis of ";Lookahead and Lookbehind Zero-Length Assertions";
- 20130317 如何批量把文件名称写入txt文档
- 全球CMOS图像传感器厂商
- java oop第06章_异常处理
- vim 命令行模式 操作指令