表示刚看到这道练习的时候觉得出题人真是太逗了,出道题感觉就像在写小说一样。但是看完题后,感觉完全变了,顿时觉得傻眼了,从这一堆看不懂的数字中怎么才能得到隐藏信息啊?
没办法,开始百度。所幸网上还是有一些有用的资料的,于是按照提示开始一步一步的实验,最终还真的得到了正确答案!
其实,这道题是想让我们真正认识到“电脑是根据一条一条的地址来寻找指令并运行”的,是想教会我们如何使用调试工具来分析一段程序。
废话不多说了,进入正题。首先,要解出这道题,必须用到调试工具,一般大家用的都是vc或者vs,这里我用的是VS2013。然后,我们创建一个空的控制台工程,把secret.cpp导入源程序文件夹。根据题目要求,这个程序需要四个输入值,但是看看程序的主函数,我们发现后两个参数在开始是可以忽略的,因为它们的缺省值都为0。所以,接下来我们就先VS的调试设置中设置好两个参数,可以任意设置,这里我用的是1,1。一切都做好后,先调试一下程序,一定要设置好断点(否则调试得不到结果),同时用一个字符指针来指向data数组,watch这个指针得到data数组的前16个字符“cccccccccFFrromo”,后面分析有用。