chisel lldb

https://github.com/facebook/chisel



安装



安装完成以后会日志中回包含下面这段:



这里安装完以后,在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在某个方法断点。



https://www.sunyazhou.com/2019/12/06/20191206Chisel/



Category linux