首先,在gdb中运行程序并断点在verify函数中,查看所有的结果(即输入的6个字符串)都已经被存储在了哪里,我们可以通过以下指令来查看:
x/s (char **)(0x804c24 + 4i)
其中i为0~5,分别查看输入字符串在内存中的地址。
接着,我们需要确认正确顺序,可以通过以下方式:
将所有6个字符串以它们对应的地址排序,然后按照地址从小到大的顺序将它们输入到程序中。
举例来说,假设我们的6个字符串地址从小到大排序以后的顺序为:
0x804b158, 0x804b18c, 0x804b1c8, 0x804b1e8, 0x804b208, 0x804b248
那么我们输入这6个字符串的顺序就应该按照它们在内存中的地址从小到大的顺序,依次输入。
在gdb中,我们可以通过以下指令来手动输入字符串:
r <<< "input1\ninput2\ninput3\ninput4\ninput5\ninput6"
如果答案正确,我们会在gdb中看到该程序成功通过phase 6。
如果答案不正确,我们需要继续调试程序,查看程序如何检查答案是否正确。