本文是一篇小白向的文章。内容是对Chisel的readme翻译,介绍了python在iOS开发中的一种简单辅助开发方式。
是一系列在iOS APP开发的过程中的LLDB的命令扩展集。
安装
安装完成以后会日志中回包含下面这段:
这里安装完以后,在bash中输入,如果存在,打开vim编辑这个文件,将上面这段代码写入文件:
如果文件不存在,先创建文件
再写入。
重启Xcode,安装就完成了,它的指令已经被包含到lldb指令集中了。
命令
如果你想看到LLDB中有哪些指令
另外Chisel还提供了一些好用的lldb指令,它是LLDB指令集的扩展,具体的指令可以通过查看某个指令的作用
假设,万一,如果你不知道help指令是干嘛的(怎么会连这个指令都不知道),可以尝试:
常用的Chisel指令:
拿和命令来说。你看到这个可能觉得这就是多次一举,明明有view debug可以用为什么要用这个,而且比这个直观。我最开始也是这么觉得的。但是一切都是为了效率,一切都是因为懒,懒得run两次,懒得重复等等。使用lldb可以在不用多次重复跑工程的前提下进行调试。比如show/hide命令,你不需要修改代码,就可以进行UI调试,隐藏或者显示某个视图。
再比如指令也是一个很有意思的指令,输入:
然后点击屏幕它会返回此时点击的view的信息,用来做UI调试也很方便,当然后面获取到点击的view的信息以后也可以跟结合使用查看它的响应链信息。
就可以拿到它的响应链信息
可以都自己尝试一下。
可以使用python添加私有的新指令,比如:
另外值得一提的是,熟悉LLDB的使用对后面学习iOS的逆向学习会有很大的帮助。本文仅仅是科普Chisel和对它的readme的简单翻译,我们要学习的是如何使用简单的python扩展自己的工具库。
上面的脚本使用了2个python库和facebook的
意思是引入fblldbbase库,但是调用时使用fb作为名称。
python的强大在于很多强大的库已经把原本简洁的python封装得更加的简介。这个脚本实际只有几行代码。
函数和函数。
函数是类的入口函数,里面已经将指令封装到中并返回指令,这个iOS开发应该都能看懂,打印keywindow的层级。方法将类的name作为指令名传出去
是库中封装的方法,它会拿到类的name作为指令,并获取run中的lldb指令,执行。
脚本生成以后将下面的路径写入就可以在Xcode中使用了
当然,想要封装出更多方便的指令,首先需要熟悉LLDB指令,更多关于LLDB的指令的熟悉还是需要自己去一个个慢慢玩。更强大的LLDB可以使用在逆向上,例如在不知道某个类的实现的时候,也可以使用LLDB在某个方法断点。
完。
【1】chisel 在github地址:https://github.com/facebook/chisel
欢迎关注,一起成长
领取专属 10元无门槛券
私享最新 技术干货