我开发了一个简单的 IOS 应用程序,它只验证 pin/code 值,如果为 true,则打印 "isvalidated",如果为 false,则打印 "is notvalidate"。
我做了什么然后我选择了 product->archive 应用程序并将其作为“myapp.app”并将其上传到我的 IOS 手机中,之后我使用 GDB 尝试将应用程序破解为(PoC),但是当我尝试将断点设置如下:
#(gdb) break -[viewController isValidCode]
Function "-[viewController isValidCode]" not defined.
Make breakpoint pending on future shared library load? (y or [n])
这个错误背后的原因是什么?在使用应用程序之前 - 在 XCode 中的存档步骤期间,我们是否需要指定任何首选项。
Reading symbols for shared libraries . done
Reading symbols for shared libraries ........... done
Reading symbols for shared libraries + done
*0x3b442eb4 in mach_msg_trap ()*
Best Answer-推荐答案 strong>
当您归档产品时,它会在“发布”模式下构建,其中调试符号被去除。 lldb 或 gdb 不利用 __OBJC 段中的信息来尝试获取方法名称,它们仅依赖于调试符号。
您需要做的是在特定地址中断,即在 gdb 中: b *0x12345 其中 0x12345 是 -[viewController 的实现地址isValidCode] 。
要检索该地址,您可以查看 xcode 生成的程序集。或者更现实地说,就像你对“未知”二进制文件所做的那样;您可以使用 otool 或 class-dump 实用程序等工具(查看 -A 和 -H 选项)
关于iphone - GDB IOS 中未定义函数,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/17470808/
|