iOS 之 LLDB(下)(chisel 和 cycript)

安装 Chisel
  • home-brew
  • brew.sh
  • brew -v
  • brew list
  • brew update
  • brew install chisel
配置Chisel
  进入 ~/.lldbinit
  添加一行
 command script import /usr/local/opt/chisel/libexec/fblldb.py
配置LLDB
进入~/.lldb
添加一行
command script #import /opt/LLDB/lldb_commands/dslldb.py
Chisel使用
  • po [self.view recursiveDescription] 打印self.view视图的层次结构
  • pviews 打印所有的views
  • command source ~/.lldbinit 加载lldbinit的资源
  • pvc 打印所有控制器
  • pactions 地址
  • presponder 地址 //打印响应链
  • pclass 地址 ///查看类
  • pmethods 地址 //查看方法
  • pinternals 地址 //查看属性
  • fvc -v 地址
  • fv 视图名称
  • taplog 下次触发断点会打印断点位置的log
  • flicker 地址 //该地址的控件UI会闪烁
  • vs 地址:
  • w s a d p //会标红vs状态下控件的 父控件 子控件视图中的第一个控件 a同级视图中下个控件 d同级控件中上一个控件
  • q 退出ws状态
LLDB插件

安装配置
按照git上的install即可,如下链接:
git下载链接

使用:

  • search UIView
  • fv 视图view
  • 如,search wcredEnvelopesreceivehomeView 可以得到此处的地址
  • methods 地址, //可以查看该对象的方法
  • b -a 上面对象中某个想设置断点的方法的地址
  • 触发断点后,bt查看函数点用栈
  • sbt 可查看恢复一部分符号的调用栈
cycript
  1. cycript介绍:
    Cycript是由Cydia创始人Saurik推出的一款脚本语言,Cycript混合了OC、JavaScript语法的解释器,这意味着我们能够在一个命令中使用Oc或者JavaScript,甚至两者并用。它能够挂钩正在运行的进程,能够在运行时修改很多东西。
  2. 安装配置
    官网下载SDK,下载后使用Cycript这个可执行文件,为了方便,我们可以放在 /opt/cycript_0.9.594 (opt目录有可选的意思),查看.zshrc文件,cat ~/.zshrc 中放有bash_profile,我们在.zshrc文件中配置。
    vi ~/.zshrc
    在这里插入图片描述
  3. cycript常用命令
    进入Cycript环境:
    使用MonkeyDev新建MonkeyApp工程,运行需要动态调试的App,Monkey默认开启了Cycript服务:
    CYListenServer(6666);
CHConstructor{
    NSLog(INSERT_SUCCESS_WELCOME);
    
    [[NSNotificationCenter defaultCenter] addObserverForName:UIApplicationDidFinishLaunchingNotification object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification * _Nonnull note) {
        
#ifndef __OPTIMIZE__
       CYListenServer(6666);

        MDCycriptManager* manager = [MDCycriptManager sharedInstance];
        [manager loadCycript:NO];

        NSError* error;
        NSString* result = [manager evaluateCycript:@"UIApp" error:&error];
        NSLog(@"result: %@", result);
        if(error.code != 0){
            NSLog(@"error: %@", error.localizedDescription);
        }
#endif
        
    }];
}

Cycript
附加进程:
Cycript –r ip:port
退出Cycript环境:
Ctrl + D
Cycript调试命令
>UIWindow.keyWindow() 获取keyWindow
UIApp 获取APPlication单例对象
recursiveDescription() 循环打印子视图
toString() 格式化打印(遇到\n换行)
#对象地址。拿到该对象,可用于调用方法
*对象地址。可以取出对象的成员变量
Choose(类名) 查询当前进程中该类型的对象。
在这里插入图片描述
UIApp.keyWindow.recursiveDescription().toString()
在这里插入图片描述
快速登录:
在这里插入图片描述
在如图所示目录中vi cylogin.sh,
cycript -r 手机地址+端口号
cycript -r 192.168.32.113:6666
在这里插入图片描述
这里是:192.168.32.113
使用如下所示命令直接登录快捷登录:
在这里插入图片描述

  1. Cycript高级用法

    Cy文件
    Cycript是一门脚本语言,它可以加载封装好的.cy文件。
    我们会将常见的Cycript常用功能封装到.cy文件中,便于调试。
    非越狱中导入.cy文件
    利用MonkeyDev工具导入.cy文件
    MonkeyDev本身集成了Cycript。我们只需要将.cy文件通过xcode导入Framworks目录即可。

    新建cy文件:
    command + n 新建一个empty文件,
    在这里插入图片描述
    在新建文件中,输入一个如下所示的函数,
    在这里插入图片描述
    如下,加载到target项目,目录下,此处不需勾选
    在这里插入图片描述
    command+r重新运行项目,如下,在cycript中使用之前需要使用@import导入一下文件,
    在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值