概述

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的更多相关文章

  1. iOS逆向系列-逆向APP思路

    界面分析 通过Cycript.Reveal. 对于Reveal安装配置可参考配置iOS逆向系列-Reveal 通过Reveal找到内存中的UI对象 静态分析 开发者编写的所有代码最终编译链接到Mach ...

  2. iOS逆向系列-脱壳

    概述 通过iOS逆向系列-逆向App中使用class-dump工具导出App的Mach-O文件所有头文件.Hopper工具分析App的Mach-O文件代码大概实现.但是这些前体是App的Mach-O没 ...

  3. iOS逆向系列-tweak补充

    tweak加载资源 开发自己的deb插件需要加载自己的资源,比如图片资源.iOS中常用的两种加载图片资源的方式: + (nullable UIImage *)imageNamed:(NSString ...

  4. iOS逆向系列-theos

    概述 theos是GitHub开源的一个项目,通过nic.pl创建tweak项目.通过编写我们注入代码,然后执行编译.打包.安装等操作将代码注入iPhone安装的制定程序. theos环境配置 安装签 ...

  5. iOS逆向系列-Mach-O文件

    概述 Mach-O是Mach object的缩写,是Mac\iOS上用于存储程序.库的标准格式. 常见的Mach-O文件 属于Mach-O格式的文件类型有. 可以在xnu源码中,查看到Mach-O格式 ...

  6. iOS逆向系列-Reveal

    概述 Reveal是一款调试iOS程序UI界面的神器. 官网地址:https://revealall.com 下载:https://revealapp.com/download/ 建议下载Reveal ...

  7. iOS逆向系列-动态调试

    Xcode调试App原理 Mac安装了Xcode Xcode的安装包中包含了debugserver 可执行类型的Mach-O文件,iPhone第一次连接Xcode调试会将Xcode中的debugser ...

  8. 我的iOS开发系列博文

    之前目录性的总结了发表过的关于OC方面的文章,今天在目录性的总结一下有关iOS开发的文章.走过路过不要错过哦,今天的博文也全都是干货.写技术博客与大家交流一下思想也是不错的. 下面是我的技术博客中有关 ...

  9. iOS逆向分析app

    适合有一定的逆向编程基础的人看. 背景:自动抢红包的脚本工具:cyscript,reveal,class-dump,越狱的pod等. 这里先上一张reveal的分析图: 小结:获取到了真个软件的整体结 ...

随机推荐

  1. FontFamily 和Font 的区别

    GDI+ 将字样相同但字形不同的字体分组为字体系列.例如,下面是同一个字样(Arial),不同的字形 : ----------------------------------------------- ...

  2. NX二次开发-获取工程图尺寸的值UF_DRF_ask_dim_info

    UF_initialize(); //遍历所有尺寸 ; tag_t DimTag = NULL_TAG; UF_OBJ_cycle_objs_in_part1(UF_PART_ask_display_ ...

  3. 《DSP using MATLAB》Problem 8.44

    代码: %% ------------------------------------------------------------------------ %% Output Info about ...

  4. ECMAScript1.2 表达式|语句|break|continue

    表达式 一个表达式可以产生一个值,有可能是运算,函数调用, 有可能是字面量,表达式可以放在任何需要值的地方. 语句 语句可以理解为一个行为,循环语句和判断语句就是典型的语句. 一个程序有很多个语句组成 ...

  5. ps-手捧城堡滴水云雾图

    1打开背景图 置入第二张图片 栅格化-加入蒙版-渐变 置入第三张图片 栅格化-用快速选择工具选取-加入蒙版 置入第四张图片 栅格化-调整图层-点击城堡建立蒙版-点击手的蒙版 ctrl-点击城堡的蒙版- ...

  6. git ssh使用公钥授权怎么都不通过

    前提: 1.客户端生成了id_rsa.pub和id_rsa 2.服务端在.ssh/authorized_keys也加入了客户端的id_res.pub 3./etc/ssh/sshd_config开启了 ...

  7. adostoredproc用法 因为用的少每次还得看一下代码,记下来

    {1.关闭2.清除参数(固定的可省略)3.参数赋值4.打开(或执行)如果有感知控件的话 就会显示出结果} ADOStoredProc1.close; //关闭 ADOStoredProc1.param ...

  8. java-day12

    数据结构 常用的数据存储结构:栈,队列,数组,列表,红黑树. 栈:先进后出(入口和出口在用一侧) 队列:先进先出 数组: 查询快:因为数组的地址是连续的,通过数组的首地址找到数组中的元素. 增/删慢: ...

  9. 17-MySQL-Ubuntu-数据表的查询-分页(六)

    分页(limit) 注: (1)limit位于SQL语句的最后面; (2)limit 2; 2表示查询前两条数据; (3)limit 0,2;  0表示查询第1页的起始数据的下标,2表示每页有两条数据 ...

  10. 在Logstash的配置文件中对日志事件进行区分

    1.多个日志文件作为输入源 input { # 通过给日志事件定义类型来区分 file { path => ["/var/log/nginx/access.log"] typ ...