首页 03-Cycript
文章
取消

03-Cycript

1.Cycript介绍

  • CycriptObjective-C++ES6(Javascript)Java等语法的混合物。
  • 可以用来探索、修改、调试正在运行的Mac、iOS APP
  • 官网: http://www.cycript.org
  • 文档: http://www.cycript.org/manual
  • 通过Cydia安装Cycript,即可在iPhone上调试运行中的App

2.Cycript开启和关闭

  • 开启

    • cycript
    • cycript -p 进程ID
    • cycript -p 进程名称
    1
    2
    3
    4
    5
    
    ~ root# cycript
    cy# 10 + 10
    20
    ~ root# cycript -p 1837 
    ~ root# cycript -p neteasemusic
    
  • 查看进程必须装的ps命令

    • Cydia安装adv-cmds
    • ps命令是process status的缩写,使用ps命令可以列出系统当前的进程。
    1
    2
    3
    4
    
    // 列出所有的进程
    ps -A
    // 搜索关键词
    ps -A | grep 关键词
    
    • 关闭
      • control + d 退出
      • control + c 取消输入
  • 语法

    • UIApp
      • [UIApplication sharedApplication]
    • 定义变量
      • var 变量名 = 变量值
    • 用内存地址获取对象
      • #内存地址
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    ~ root# cycript -p neteasemusic
    cy# [UIApplication sharedApplication]
    #"<NMApplication: 0x10b50a730>"
    cy# UIApp
    #"<NMApplication: 0x10b50a730>"
    cy# var app = UIApp
    #"<NMApplication: 0x10b50a730>"
    cy# var win = UIApp.keyWindow
    #"<OTTouchObservingWindow: 0x10b5823c0; baseClass = UIWindow; frame = (0 0; 375 667); gestureRecognizers = <NSArray: 0x28155ca20>; layer = <UIWindowLayer: 0x281cca860>>"
    cy# UIApp.keyWindow.rootViewController
    #"<NMRootNavigationController: 0x10c197600>"
    cy# #0x10b5823c0
    #"<OTTouchObservingWindow: 0x10b5823c0; baseClass = UIWindow; frame = (0 0; 375 667); gestureRecognizers = <NSArray: 0x28155ca20>; layer = <UIWindowLayer: 0x281cca860>>"
    cy# #0x10b5823c0.rootViewController
    #"<NMRootNavigationController: 0x10c197600>"
    
    • ObjectiveC.classes
      • 已加载的所有OC类
    • 查看对象的所有成员变量
      • *对象
    • 递归打印view的所有子控件(跟LLDB一样的函数,lldb在断点调试那里)
      • [UIApp.keyWindow recursiveDescription] oc
      • view.recursiveDescription().toString() js
    • 筛选出某种类型的对象
      • choose(UIViewController)
      • choose(UITableViewCell)
  • 封装Cycript

    • 将客户端(Mac)文件复制到服务器端(iPhone)
    1
    
    scp -P 10010 ~/Documents/iOS/JVTools.js root@localhost:/usr/lib/cycript0.9/JVTools.cy
    
    • 导入JVTools.cy文件
    1
    2
    3
    
    cy# @import JVTools // JVTools是在cycript0.9中
    // com是cycript0.9中的文件夹,所以要com.JVTools
    cy# #import com.JVTools 
    

3.安装Reveal

  • Cydia安装Reveal2Loader插件

  • 设置 -> Reveal -> Enabled Applications,选出可以测试的App.

  • 官网下载Reveal

    • 如果试用,发邮件获取试用码就可以获得14天试用。
    • HELP -> Show Reveal Library in Finder -> ios-arm64_armv7 -> RevealServer.framework,复制RevealServer。
    • 将复制RevealServer到手机/Library/Frameworks/RevealServer.framework,可以通过iFunbox直接粘贴。
    1
    2
    3
    4
    
    // 终端粘贴
    $ scp -P 10010 /Users/jovins/Jovins/RevealServer root@localhost:/Library/Frameworks/RevealServer.framework/
    // 重启手机桌面, 这步要连接手机
    root# killall SpringBoard
    
本文由作者按照 CC BY 4.0 进行授权

02-Mac远程登录到iPhone

04-逆向App