iOS逆向-day3:Cycript

简介: iOS逆向-day3:Cycript

一、Cycript 简介



  • 1.1、Cycript 是Objective-C++、ES6(JavaScript)、Java等语法的混合物,可以用来探索、修改、调试正在运行的 Mac / iOS APP

官网
文档

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


image.png

1.2、Cycript的开启和关闭

  • 开启(进程的查看需要借助 PS指令,请看1.3)


cycript
cycript -p 进程ID
cycript -p 进程名称


image.png


  • 爱奇艺的进程是 2613,那么输入:cycript -p 2613,之后的操作都是在调试爱奇艺
  • 建议使用进程名称(如爱奇艺:cycript -p iQiYiPhoneVideo),因为进程的ID一直在变

image.png


  • 取消输入:Ctrl + C
  • 退出:Ctrl + D
  • 取消输入:Command + R


  • 1.3、ps 命令
  • 安装 adv-cmds


image.png

ps命令是 process status的缩写,使用ps命令可以列出系统当前的进程

  • 列出所有的进程


ps –A
ps aux


提示:输入上面的指令是在 终端连接iphone的情况下

image.png

上图 左边进程 ID右边进程的可执行文件,右边最后一个单词可以称为 进程的名称,如上图的:launch、amfid、syslogd.......


  • 搜索关键词,如果是爱奇艺,可以搜索  Video


ps –A | grep 关键词


二、Cycript常用语法


  • 2.1、常用语法一
  • (1)、获取UIApplication 对象,下面等价


UIApp
[UIApplication sharedApplication]


image.png


  • 说明爱奇艺的UIApplication 就是 UIApplication,没有改名字
  • (2)、定义变量:var 变量名 = 变量值


// 获取 app的Window
 var appWindow = UIApp.keyWindow
 // 获取根控制器
 app.rootViewController



image.png


以爱奇艺为例打印的是:<RootViewController: 0x12e075600>",说明爱奇艺的根控制器就是:RootViewController


  • (3)、用内存地址获取对象:#内存地址


image.png

(4)、ObjectiveC.classes:已加载的所有OC类,如下查看 糗事百科的主界面


image.png

  • (5)、查看对象的所有成员变量:*对象,如查看 UIApplication 里面的所有成员变量,可以如下


*UIApp
  • 2.2、常用语法二
  • (1)、递归打印view的所有子控件(跟LLDB一样的函数)


view.recursiveDescription().toString()
  • (2)、筛选出某种类型的对象


choose(UIViewController)
choose(UITableViewCell)
  • 2.3、上面的使用太繁琐了,我们可以使用 MJ 老师的工具: mjcript,它是基于Cycript实现的一些实用函数


  • 安装
  • 步骤
  • (1)、下载mjcript库
  • (2)、将mjcript.cy文件拖到/usr/lib/cycript0.9,建议下载 funbox 来管理文件


image.png


  • (3)、SSH连接iOS设备,这个如果不会的可以参考 上一篇博客
  • (4)、使用Cycript监听APP,通过 @import导入mjcript


image.png


2.4、mjcript 工具的用法

  • 一些常用属性


image.png


拿到显示在最前面的控制器,下面以糗事百科为例


image.png


  • 我们可以看到 糗事百科 我的界面的控制器叫做:QBMeViewController


  • 获得某个类的 对象方法名列表,支持正则表达式查询


MJInstanceMethodNames(控制器的名字 或者 #地址)
// 举个正则的例子,找有关login的对象方法
MJInstanceMethodNames(控制器的名字 或者 #地址,/login/)


image.png


  • 我这里是以糗事百科的设置界面为例


  • 获得某个类的 类方法名列表,支持正则表达式查询


MJClassMethodNames(控制器的名字 或者 #地址)


image.png

获取界面的 view,下面以糗事百科的登录界面为例

MJSubviews(#地址.view)


image.png

接着我们可以在登录界面的文本框上动手脚,比如修改


image.png

用: #内存地址.text = "190" 来修改手机号的输入

#0x1443a7e00.text = "190"


我们还可以找到登录按钮 ,把它移除掉,如下


image.png


拿到登录的按钮地址,做如下操作



[#0x1443b9f60 removeFromSuperview]
  • 这里做一个小提示:汉子与unicode码转换的方式,下面是用Python


python
unicode('登录','UTF-8')
u'\u767b\u5f55'


三、封装Cycript - .cy文件



  • 3.1、.cy文件 的简单写法,我的文件名是:jkcycript


(function(exports) {
     // 这里面可以填充我们需要的东西
})(exports);
  • 函数 和 常量的定义


(function(exports) {
     //  求和
     sum = function(a,b) {
         return a + b
     };
     //  求差
     minus = function(a,b) {
         return a - b
     };
})(exports);
// 在使用的时候我们需要如下操作
// 导入: @import jkcycript
@import jkcycript
sum(2,3) // 结果是:5
  • 上面是全局的,如果想要前缀可以写为


(function(exports) {
     //  求和
     exports.sum = function(a,b) {
         return a + b
     };
     //  求差
     exports.minus = function(a,b) {
         return a - b
     };
})(exports);
// 在使用的时候我们需要如下操作
// 导入: @import jkcycript
@import jkcycript
jkcycript.sum(2,3) // 结果是:5
  • exports 参数名固定,用于向外提供接口
  • .cy文件存放到/usr/lib/cycript0.9目录下
  • 3.2、更多的可以参考MJ老师的mjcript


四、Reveal (UIView层级分级工具)



image.png



提示 :Reveal 只能识别 UIView 的层级结构,想要是识别控制器的结构,我们可以使用 mjcript


  • 4.2、Reveal 调试环境配置 (越狱设备)
  • 调试环境配置 一 :iPhone上安装Reveal Loader
    软件源:http://apt.so/codermjlee,不要安装其他源的版本,有可能不支持新版Reveal


image.png

image.png


image.png


调试环境配置 二

安装完Reveal Loader后,打开【设置】,选择需要调试的APP


image.png


调试环境配置 三

找到Mac的Reveal中的 RevealServer 文件,覆盖iPhone的/Library/RHRevealLoader/RevealServer文件,我们可以用 iFunBox 打开


image.png


image.png


  • 重启SpringBoard或者重启手机,可以在iPhone上输入终端命令
    重启SpringBoard:killall SpringBoard
    重启手机:  reboot


  • 4.3、在上面的操作做完,我们再重新打开 Reveal ,就可以看到使用中的iphone


image.png

image.png


目录
相关文章
|
缓存 JavaScript iOS开发
iOS 逆向编程(十四)Cycript 语法入门
iOS 逆向编程(十四)Cycript 语法入门
225 0
|
缓存 iOS开发
iOS 逆向编程(十七)Cycript 使用对APP实测
iOS 逆向编程(十七)Cycript 使用对APP实测
237 0
|
缓存 JavaScript iOS开发
iOS 逆向编程(十五)Cycript 语法进阶(封装 .cy 脚本文件)
iOS 逆向编程(十五)Cycript 语法进阶(封装 .cy 脚本文件)
204 0
|
监控 JavaScript 前端开发
iOS 逆向编程(十二)Cycript 安装与使用
iOS 逆向编程(十二)Cycript 安装与使用
353 0
|
数据安全/隐私保护 iOS开发
iOS逆向小技能:解锁无密码的设备、判断设备是否锁定、锁定设备、打开某个程序
介绍lua 函数: runApp、closeApp、getScreenSize、getDeviceID、lua_exit、isFrontApp。
300 0
|
安全 算法 开发工具
iOS逆向-day11:代码混淆
iOS逆向-day11:代码混淆
855 0
iOS逆向-day11:代码混淆
|
编译器 API iOS开发
iOS逆向-day10:LLVM 编译器(下)
iOS逆向-day10:LLVM 编译器(下)
407 0
iOS逆向-day10:LLVM 编译器(下)
|
自然语言处理 前端开发 IDE
iOS逆向-day10:LLVM 编译器(上)
iOS逆向-day10:LLVM 编译器
233 0
iOS逆向-day10:LLVM 编译器(上)
|
安全 数据安全/隐私保护 iOS开发
iOS逆向-day9:签名机制(下)
iOS逆向-day9:签名机制(下)
360 0
iOS逆向-day9:签名机制(下)
|
存储 安全 数据安全/隐私保护
iOS逆向-day9:签名机制(中)
iOS逆向-day9:签名机制(中)
185 0
iOS逆向-day9:签名机制(中)

热门文章

最新文章

  • 1
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
  • 2
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 3
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 4
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
  • 5
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
  • 6
    iOS各个证书生成细节
  • 7
    iOS:应用程序的线程安全性
  • 8
    iOS开发-UIScrollView原理
  • 9
    iOS - Swift NSPoint 位置
  • 10
    【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记5 Data Structures、Methods、Properties
  • 1
    iOS各个证书生成细节
    21
  • 2
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
    113
  • 3
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
    39
  • 4
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    54
  • 5
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    46
  • 6
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
    39
  • 7
    uniapp开发ios打包Error code = -5000 Error message: Error: certificate file(p12) import failed!报错问题如何解决
    152
  • 8
    【05】2025年1月首发完整版-篇幅较长-苹果app如何上架到app store完整流程·不借助第三方上架工具的情况下无需花钱但需仔细学习-优雅草央千澈详解关于APP签名以及分发-们最关心的一篇来了-IOS上架app
    296
  • 9
    app开发之安卓Android+苹果ios打包所有权限对应解释列表【长期更新】-以及默认打包自动添加权限列表和简化后的基本打包权限列表以uniapp为例-优雅草央千澈
    104
  • 10
    深入探索iOS开发中的SwiftUI框架
    150