記得在剛上大學時,在電腦教室上課,發現隔壁同學非常認真的在使用電腦,仔細一看,原來是認真的玩Windows內建的踩地雷遊戲,回到宿舍後,我也來玩踩地雷,不過是將它丟到反編譯軟體,分析裡面的運作原裡。
一、初始化地雷
在運行踩地雷時,它會亂數運算所有地雷的位置。
二、存入地雷旗標
亂數完位址後,會將地雷旗標(0xFFFF)存到記憶體空間,其中edx是地雷格數的起始位址,eax是亂數運算值。
三、判斷是否為地雷
在記憶體空間,標示為地雷的旗標是0xFFFF,反之是0x0000,因此下圖的ecx為踩地雷的所有格數空間,eax是點擊到的格數,bx是0xFFFF,那麼如果點擊到地雷的格數,就會將所有地雷繪製出來,並結束遊戲。
四、繪圖API
在踩地雷遊戲,繪製空白格數、數字格數和地雷格數,都是使用BitBlt的API來繪製的。
五、地雷位址與記憶體空間對應
每個地雷都會對應到0xFFFF的旗標。
六、顯示所有地雷