ios逆向过程中lldb调试技巧-po篇

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ios逆向过程中lldb调试技巧-po篇相关的知识,希望对你有一定的参考价值。

假如你准备在模拟器里面运行这个,你可以在“(lldb)”提示的后面输入下面的:

(lldb) po $eax

LLDB在xcode4.3或者之后的版本里面是默认的调试器。假如你正在使用老一点版本的xcode的话,你又GDB调试器。他们有一些基本的相同的命令,因此假如你的xcode使用的是“(gdb)”提示,而不是“(lldb)”提示的话,你也能够更随一起做,而没有问题。

“po”命令是“print object”(打印对象)的简写。“$eax”是cup的一个寄存器。在一个异常的情况下,这个寄存器将会包含一个异常对象的指针。注意:$eax只会在模拟器里面工作,假如你在设备上调试,你将需要使用”$r0″寄存器。

例如,假如你输入:

(lldb) po [$eax class]

你将会看像这样的东西:

(id) $2 = 0x01446e84 NSException

这些数字不重要,但是很明显的是你正在处理的NSException对象在这里。

你可以对这个对象调用任何方法。例如:

(lldb) po [$eax name]

这个将会输出这个异常的名字,在这里是NSInvalidArgumentException,并且:

(lldb) po [$eax reason]

这个将会输出错误消息:

(unsigned int) $4 = 114784400 Receiver () has no segue with identifier ‘ModalSegue‘

 

注意:当你仅仅使用了“po $eax”,这个命令将会对这个对象调用“description”方法和打印出来,在这个情况下,你也会得到错误的消息。

以上是关于ios逆向过程中lldb调试技巧-po篇的主要内容,如果未能解决你的问题,请参考以下文章

LLDB调试详解--逆向开发

iOS逆向工程之使用LLDB的USB连接调试第三方App

IOS调试lldb命令常用po

iOS开发断点调试高级技巧

IOS逆向学习-动态调试原理LLDB

iOS开发断点调试高级技巧