美文网首页hooker
iOS逆向与安全5.3:Cycript

iOS逆向与安全5.3:Cycript

作者: looha | 来源:发表于2019-06-13 00:30 被阅读0次

    Cycript

    Cycript是由Cydia创始人Saurik推出的一款脚本语言,Cycript混合了OC、JavaScript语法的解释器,这意味着我们能够在一个命令中使用Oc或者JavaScript,甚至两者并用。它能够挂钩正在运行的进程,能够在运行时修改很多东西。

    高级语言语言 --> 二进制(对应架构)

    解释型(同声翻译):Python

    编译型(翻译成书):OC

    Cycript 程序运行状态下,不用停止 ,就可以调试显示

    Cycript的安装

    • 下载 官网

    • 将资源放入指定位置
      一般放在 /opt/位置


      文件位置
    • 配置环境变量
      编辑 vim ~/.bash_profile文件

      export cycript_src=/opt/cycript_0.9.594/
      export PATH=$PATH:$cycript_src
    

    更新刚配置的环境变量

        $ source .bash_profile
    

    编辑 ~/.zshrc 不用每次手动执行source .bash_profile

        $ vim ~/.zshrc
    

    加入

    source /Users/looha/.bash_profile
    

    保存即可

    Cycript的使用

    • 连接手机
      通过WIFI 端口连接 非越狱手机无法打开端口,借助于monkey, monkey套包会为应用申请端口6666
    image.png

    cycript -r ip地址

    cycript -r  192.168.3.222:666
    
    
    image.png
    • 使用
    UIWindow.keyWindow() 获取keyWindow
    UIApp 获取APPlication单例对象
    recursiveDescription() 循环打印子视图
    toString() 格式化打印(遇到\n换行)
    # 对象地址。拿到该对象,可用于调用方法
    #0xxxxxx.allTargets() 获取所有Target
    #0xxxxxx.allControlEvents() 获取所有Target
    获取target 
    [0xxxx actionsForTarget:target forControlEvent:64]
    
    * 对象地址。可以取出对象的成员变量
    Choose(类名) 查询当前进程中该类型的对象。
    var keyWindow =  UIWindow.keyWindow()  定义变量
    
    [I for (I in * keyWindow)] 遍历循环打印
    
    choose(UIView) 搜索选择
    
    com + D 退出
    
    
    获取targetAction image.png 遍历循环打印 层级关系 格式化层级关系 搜索选择

    脚本自动连接

    可以在个人文件根目录下建立sh文件 :LHShell

    cycript -r  192.168.3.222:666
    
    vim ~/.bash_profile
    

    配置环境变量

    export LHShell=~/LHShell
    export PATH=$LHShell:$CY
    
    base_profile
    • 登录 sh
    sh cycriptLogin.sh
    
    . cycriptLogin.sh
    
    source cycriptLogin.sh
    

    动态修改

    在app运行时,用于cycript登录 ,修改界面 可及时看到修改界面

    高级用法

    • 输出当前所有的类
    ObjectiveC.classes
    
    • 输出bundle id
    APPID
    
    • pviews
    pviews 控件
    pviews()
    

    pvcs()控制器

    pvcs()
    

    响应者 pactions(*0xxxxxxxx)

    pactions(*0xxxxxxxx)
    
    响应者

    响应者链条 rp(#0xxxxxxxx)

     rp(#0xxxxxxxx)
    
    响应链 monkey cy 文件封装

    cy文件封装

    Cy文件

    Cycript是一门脚本语言,它可以加载封装好的.cy文件。
    我们会将常见的Cycript常用功能封装到.cy文件中,便于调试。

    非越狱中导入.cy文件

    利用MonkeyDev工具导入.cy文件
    MonkeyDev本身集成了Cycript。我们只需要将.cy文件通过xcode导入Framworks目录即可。
    在monkey工程中

    • 新建空文件Empty文件


      image.png
    image.png
    • 添加到frameworks


      image.png
    • cycript 导入

    @import test
    
    导入 常用变量命名

    PS 在cy文件中,定义的变量一旦加载后,就固定了,再不会变。为避免这个问题,可以用function()写成动态

    正确写法

    相关文章

      网友评论

        本文标题:iOS逆向与安全5.3:Cycript

        本文链接:https://www.haomeiwen.com/subject/mwedfctx.html