通常动态调试app时,都是在终端里用lldb直接调试,可是用Xcode的Attach to Process
也能够链接到真机上的进程进行调试。可是只能调试用本身的证书签名的app。git
在Xcode上调试的优势:github
debug gauges
里的Disk和Network等工具。Debug UI Hierarchy
功能,直接查看app的界面布局。Debug Memory Graph
功能,查看当前内存中存在的全部对象,以及对象之间的引用关系。步骤以下。markdown
重签名后才能用Xcode attach。而重签名前须要对app进行砸壳。这些步骤就再也不重复了。app
额外说一句,在砸壳后建议进行一下恢复符号表的操做。恢复符号表后,在调试时就能直接在堆栈中看到方法名,免去了计算偏移量而后在hopper里查找的麻烦。参考:iOS符号表恢复&逆向支付宝, restore-symbol。工具
重签名后安装到越狱设备上,启动app,在Xcode中随便打开一个工程,选择越狱设备,就能够在Debug->Attach to Process
中找到正在运行的进程名和进程id,点击后就会开始链接。大概过1分钟就会链接上。oop
链接上后,就能够点击使用Xcode的Debug UI Hierarchy
来查看界面布局:布局
注意,Debug UI Hierarchy
对Xcode版本彷佛有要求,在调试重签名app时,Xcode8.3.2能够,而Xcode8.2就没有这个功能按钮。post
点击Debug Memory Graph
按钮,能够查看当前内存中存在的数据。打印地址,查看引用关系,能够配合malloc stack
进行追踪。若是打开了malloc stack
,就能够直接在右边显示这个对象的建立堆栈。参考:iOS逆向:在任意app上开启malloc%20stack追踪内存来源。ui
debug gauges
中的Disk工具能够查看app当前打开的文件。spa
相似的,也能够用instrument调试重签名后的app,不过并非全部工具均可以使用,对逆向的帮助不大。