我开发了一个简单的IOS应用程序,只需验证pin / code值,打印“已验证”如果为true,“未验证”如果为false。
我做了什么然后我选择 product-> archive 应用程序并将其作为“myapp.app”并将其上传到我的IOS手机中,之后我使用GDB试图破解应用程序as(PoC),但是当我尝试将断点作为以下内容时:
#(gdb)break - [viewController isValidCode]
功能“ - [viewController isValidCode]”未定义。
在未来的共享库加载中使断点挂起? (y或[n])
此错误背后的原因是什么?在使用应用程序之前是否需要指定任何首选项 - 在XCode中的归档步骤中。
读取共享库的符号。完成的
读取共享库的符号...........完成
读取共享库的符号+已完成
<_> * 0x3b442eb4在mach_msg_trap()* 中
答案 0 :(得分:1)
归档产品时,它以“发布”模式构建,其中剥离调试符号。 lldb
或gdb
不会利用__OBJC
段中的信息来尝试获取方法名称,它们仅依赖于调试符号。
您需要做的是打破特定地址,即在gdb中b *0x12345
,其中0x12345
是-[viewController isValidCode]
的实现地址。
要检索该地址,您可以查看xcode生成的程序集。或者更现实地说,就像你对“未知”二进制文件所做的那样;您可以使用otool
或class-dump
实用程序等工具(查看-A
和-H
选项)