扫雷问题再探究
   作者:Zoologist 于2009-3-17上传 

论坛上的danny发现第十期的windows扫雷机中存在一个bug,他是这样描述的“汇编通讯第十期中发现的一个BUG,偶尔在汇编通讯第十期windows扫雷游戏的扫雷机中发现一个BUG当你在运行扫雷程序,然后运行扫雷机,根据扫雷机的提示,第一个点雷的时候,那个是雷的方块就会变得不是雷,而其它雷位置不变”

动手试验一下:运行扫雷游戏之后,打开扫雷机,显示如下:

可以看到,在(1,1)处是有地雷的,但是点击这个位置之后,结果却变了:

并没有被炸到?
如果我们是央视十套《走进科学》栏目,就会有一段特别的导语“一段特别的程序,一个奇异的现象,一时间众说纷纭,是我们的程序出现了问题?
还是操作系统本身的问题?……请看本期《走进伪科学》”……

作为一名考程序吃饭的这是我们运用OllyDBG最好的时机。

用OllyDBG挂上这个程序,不知道从什么地方入手不要紧,先大概看看:


红色标记的地方很眼熟,貌似我们每次写程序中那个对消息的分解结构。回忆一下,当我们按下鼠标的时候,产生的是什么消息。想不起来不要紧,耐心向下看,夜路走多了也是能装上熟人的:


我们就在这个地方下断点好了。下好了断点运行一次,扫雷的界面会出来的,再运行一次我们的扫雷机:



按照提示,我们点(1,1)的位置一下,OllyDBG是可以断下来的。下面你可以一步一步的跟踪下去,也可以使用F9让程序自己跑下去。再启动一次扫雷机,
可以发现真的变了哦~

因此,我们可以有一个大概的结论:上面提到的那个问题,看起来并不是我们程序本身导致的,而应该是扫雷游戏自己的动作… …如果这个问题是客户提出来的,基本上可以让他直接去找微软了。不过探索精神应该是程序员必须的,我们后面还会继续研究。


<<<上一篇
欢迎访问AoGo汇编小站:http://www.aogosoft.com
下一篇>>>