在 iOS 应用程序中由 Hopper/IDA Pro 解码的函数设置断点

逆向工程 艾达 ios 料斗 数据库
2021-06-18 01:10:50

因此,对 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 显示的任何其他函数)中设置断点,我该怎么办?

1个回答

我能够通过在 ipad 上安装 gdbserver 来实现这一点。然后我 ssh 进入 ipad 并附加一个远程 lldb 调试器(xcode 工具)来攻击断点。一个很长的方法,但有效。现在有工具可以在 android 和 ios 上以相同的方式进行调试。