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赋值给本文件对象,调用时通过文名调用。可以定义全局函数直接通过类名调用。
注意对于可变的一定使用函数获取,对于固定的值可以使用变量获取。因为脚本从上到下执行变量执行过后就是固定值。函数是当被调用的时候内部代码才回去执行,并且每次调用都是实时获取的。
iOS逆向系列-Cycript的更多相关文章
- iOS逆向系列-逆向APP思路
界面分析 通过Cycript.Reveal. 对于Reveal安装配置可参考配置iOS逆向系列-Reveal 通过Reveal找到内存中的UI对象 静态分析 开发者编写的所有代码最终编译链接到Mach ...
- iOS逆向系列-脱壳
概述 通过iOS逆向系列-逆向App中使用class-dump工具导出App的Mach-O文件所有头文件.Hopper工具分析App的Mach-O文件代码大概实现.但是这些前体是App的Mach-O没 ...
- iOS逆向系列-tweak补充
tweak加载资源 开发自己的deb插件需要加载自己的资源,比如图片资源.iOS中常用的两种加载图片资源的方式: + (nullable UIImage *)imageNamed:(NSString ...
- iOS逆向系列-theos
概述 theos是GitHub开源的一个项目,通过nic.pl创建tweak项目.通过编写我们注入代码,然后执行编译.打包.安装等操作将代码注入iPhone安装的制定程序. theos环境配置 安装签 ...
- iOS逆向系列-Mach-O文件
概述 Mach-O是Mach object的缩写,是Mac\iOS上用于存储程序.库的标准格式. 常见的Mach-O文件 属于Mach-O格式的文件类型有. 可以在xnu源码中,查看到Mach-O格式 ...
- iOS逆向系列-Reveal
概述 Reveal是一款调试iOS程序UI界面的神器. 官网地址:https://revealall.com 下载:https://revealapp.com/download/ 建议下载Reveal ...
- iOS逆向系列-动态调试
Xcode调试App原理 Mac安装了Xcode Xcode的安装包中包含了debugserver 可执行类型的Mach-O文件,iPhone第一次连接Xcode调试会将Xcode中的debugser ...
- 我的iOS开发系列博文
之前目录性的总结了发表过的关于OC方面的文章,今天在目录性的总结一下有关iOS开发的文章.走过路过不要错过哦,今天的博文也全都是干货.写技术博客与大家交流一下思想也是不错的. 下面是我的技术博客中有关 ...
- iOS逆向分析app
适合有一定的逆向编程基础的人看. 背景:自动抢红包的脚本工具:cyscript,reveal,class-dump,越狱的pod等. 这里先上一张reveal的分析图: 小结:获取到了真个软件的整体结 ...
随机推荐
- 帝国cms简介显示转义字符问题
在模板中设置简介截取字数为0,前端显示用css控制即可 white-space: nowrap; overflow: hidden; text-overflow: ellipsis; 也可以 1,在后 ...
- $My$ $template$(持续更新)
树链剖分:(来源:树的统计) #include<bits/stdc++.h> #define rint register int using namespace std; inline v ...
- Android客户端转换php服务端获取的时间戳的转换
今天在用JSON获取后台的数据的时候,发现一个奇怪的现象就是返回来的时间戳都是1970年这样的,很是纠结,最后发现时php和Java中时间的格式不一样造成的,所以我们本地客户端要做一个转换: /** ...
- NX二次开发-UFUN关闭STL文件函数UF_STD_close_stl_file
NX9+VS2012 #include <uf.h> #include <uf_obj.h> #include <uf_modl.h> #include <u ...
- NX二次开发-UFUN获得边的类型UF_MODL_ask_edge_type
1 NX11+VS2013 2 3 #include <uf.h> 4 #include <uf_ui.h> 5 #include <uf_modl.h> 6 #i ...
- 牛客多校第九场 B Quadratic equation 模平方根
题意: 已知 $x+y$ $mod$ $q = b$ $x*y$ $mod$ $q = c$ 已知b和c,求x和y 题解: 容易想到$b^2-4c=x^2-2xy+y^2=(x-y)^2$ 那么开个根 ...
- Maven精选系列--classifier元素妙用
首先来看这么一个依赖 <dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json- ...
- parallels desktop虚拟机与Mac共享网络设置方法
查看vnic0的ip centos7设置ip parallels desktop偏好设置 最后可以互ping 也可以ping外网
- iOS开发系列-应用程序之间跳转
概述 常见的涉及到应用程序之间的跳转场景,比如社交分享.支付宝.微信支付.链接跳转到应用. 在iOS中应用跳转的本质:打开一个应用只需要拿到对应应用的URL即可. 统一资源定位符 URL(统一资源定位 ...
- 神经网络 (1)- Alexnet
文章目录 模型结构 conv1层 conv2层 conv3层 conv4层 conv5层 FC6全链接图: fc7全连接层:和fc6类似. fc8链接层: 模型优化 选择ReLU作为激活函数 多GPU ...