CE使用指南之扫雷棋盘扫描
2.3第三次作業(yè)
?“掃雷”游戲逆向分析
2.3.1棋盤內(nèi)存地址范圍
2.3.1.1 初級棋盤內(nèi)存地址
1.取消“快速掃描”,掃描類型選擇“未知的初始值”,點擊棋盤第一個格子,隨后點擊“首次掃描”。
2.點擊“笑臉”,刷新棋盤,再次點擊棋盤第一個格子,若數(shù)值與上一次相同,則掃描類型選擇“未變動的數(shù)值”,若數(shù)值與上次不同,則掃描類型選擇“變動的數(shù)值”。
????
?
如上圖所示數(shù)值未變動,則選擇“未變動的數(shù)值”,點擊“再次掃描”。第二步操作反復(fù)進(jìn)行,最后看到綠色的基址。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ?
3.將該記錄添加到下方,右鍵選擇“瀏覽相關(guān)內(nèi)存區(qū)域”,相關(guān)內(nèi)容如圖所示。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
點擊“笑臉”,再點擊棋盤第一個格子,觀察下方內(nèi)存數(shù)據(jù)的變化,我們可以得出第一個格子的地址為01005362。
?
?
4.同理找到棋盤的最后一個格子地址為01005468。
?
?
因此最后得出初級棋盤地址范圍是01005362 ~ 01005468。
2.3.1.2 ?其他級別棋盤內(nèi)存地址
同理找出中級棋盤和高級棋盤的地址范圍為:
中級棋盤地址范圍 01005362?~ 01005551;
高級棋盤地址范圍 01005362?~?0100555Frr。
2.3.2 游戲中各變量的內(nèi)存地址
2.3.2.1 雷數(shù)的內(nèi)存地址
1.找旗子的地址。(中級棋盤)查看左上角雷的個數(shù)共40個,右側(cè)輸入40,掃描類型選擇“精確數(shù)值”,點擊“首次掃描”,如圖所示。
?
任一格子放置旗子,數(shù)量變?yōu)?9,輸入39進(jìn)行“再次掃描”,得出找出了旗子的基址為01005194。
?
?
2.掃描雷的內(nèi)存地址。因為旗子和雷的初始數(shù)據(jù)是一樣的,所以先掃描旗子的數(shù)據(jù),第一次掃初級棋盤的旗子數(shù)量10,轉(zhuǎn)換到中級棋盤,再次輸入旗子數(shù)量40,得出三個基址。
?
我們發(fā)現(xiàn),這三個地址中,有一個和旗子地址一樣,則排除該地址。剩余兩個地址,我們分別修改數(shù)值為1,然后點擊棋盤。修改01005330地址的數(shù)值發(fā)現(xiàn)棋盤沒有變化,則排除,具體內(nèi)容如圖所
示。
?
?
?
修改010056A4地址的數(shù)值為1,刷新棋盤,點擊某一格子,發(fā)現(xiàn)可通關(guān),則該地址為雷數(shù)的內(nèi)存地址。
?
2.3.2.2 笑臉的內(nèi)存地址
1.選擇掃描類型為“未知的初始值”,此時表情狀態(tài)為“笑臉”,點擊“首次掃描”。
?
2.點擊棋盤,改變表情的狀態(tài),若表情變化,則掃描類型修改為“變動的數(shù)值”;若未變化,則選擇“未變動的數(shù)值”。隨后點擊“再次掃描”,反復(fù)操作。最后得出地址為009759DB。
?
2.3.2.3 計時器的內(nèi)存地址
1.輸入游戲時間“0”,選擇“精確數(shù)值”,開始游戲,游戲時間會開始變動,掃描類型則選擇“變動的數(shù)值”,點擊“再次掃描”,反復(fù)操作。最后得出地址0100579C。
?
?
2.3.3地雷存放的算法
輸入?yún)?shù):
int height, int width, int mineCount
輸出參數(shù):
void
初始化:
int size = height * width;
算法:
| ?對每一個Element進(jìn)行以下步驟: ????1、生成一個隨機數(shù)random ????2、if (random * size?<= mineCount){mineCount--;//設(shè)Element的狀態(tài)為MINE} ????3、size-- ????4、進(jìn)入下一個Element |
2.3.4 工作原理
1.n*n網(wǎng)格,一定數(shù)目的雷,如Windows7 Minesweeper游戲;
2.雷的位置隨機分配到網(wǎng)格上;
3.網(wǎng)格上不是雷的位置上 顯示的方塊上顯示周圍上下左右四個角的有雷的個數(shù);
4.雷數(shù)計數(shù)器顯示余下的未發(fā)現(xiàn)的雷數(shù)。
總結(jié)
以上是生活随笔為你收集整理的CE使用指南之扫雷棋盘扫描的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DXP设计PCB过程中批量修改元件符号大
- 下一篇: cpu门禁电梯卡复制测试过程