因此,对 iOS 应用程序进行逆向工程非常有趣,我在学习如何阅读反汇编和理解它们方面取得了重大进步。现在我正在尝试使用 lldb debugserver 调试 iOS 应用程序。
我能够将我的系统连接到运行 gdb 服务器的越狱 ipad 并将其连接到正在运行的进程之一。现在的问题是,可执行文件没有符号(或者至少 lldb 告诉我这一点)。但是当我尝试在 IDA Pro 和 Hopper 中反汇编它时,我能够获得所有的objective-c 类和函数名称。
例如,正在使用的函数之一是 HMACWithSecret,其签名为 -[NSString(HMAC) HMACWithSecret:]
如果我尝试使用以下命令从 lldb 设置断点
b -[NSString(HMAC) HMACWithString:]
或任何其他变体
b HMACWithSecret:
b HMACWithSecret
它无法找到相同的位置。我知道在 Objective-c 中,每个调用都是通过 objc_msgSend 进行的,并带有关于要调用哪个函数的参数。但是,如果我想在上述函数(或我通过 Hopper/IDA Pro 显示的任何其他函数)中设置断点,我该怎么办?