掃雷逆向分析
- 1.1 棋盤記憶體地址范圍
- 1.1.1初級棋盤記憶體地址
- 1.1.2 其他級別棋盤記憶體地址
- 1.2 游戲中各變數的記憶體地址
- 1.2.1 雷數的記憶體地址
- 1.2.2 笑臉的記憶體地址
- 1.2.3 計時器的記憶體地址
1.1 棋盤記憶體地址范圍
1.1.1初級棋盤記憶體地址
1.取消“快速掃描”,掃描型別選擇“未知的初始值”,點擊棋盤第一個格子,隨后點擊“首次掃描”,


2.點擊“笑臉”,重繪棋盤,再次點擊棋盤第一個格子,若數值與上一次相同,則掃描型別選擇“未變動的數值”,若數值與上次不同,則掃描型別選擇“變動的數值”,


如上圖所示數值未變動,則選擇“未變動的數值”,點擊“再次掃描”,第二步操作反復進行,最后看到綠色的基址,

3.將該記錄添加到下方,右鍵選擇“瀏覽相關記憶體區域”,相關內容如圖2.6所示,

點擊“笑臉”,再點擊棋盤第一個格子,觀察下方記憶體資料的變化,通過觀察,我們可以得出第一個格子的地址為01005361,

4.同理找到棋盤的最后一個格子地址為01005469,

因此最后得出初級棋盤地址范圍是01005361 ~ 01005469,
1.1.2 其他級別棋盤記憶體地址
同理找出中級棋盤和高級棋盤的地址范圍為:
中級棋盤地址范圍 01005361 ~ 01005550;
高級棋盤地址范圍 01005361 ~ 0100555E,
1.2 游戲中各變數的記憶體地址
1.2.1 雷數的記憶體地址
1.找旗子的地址,(中級棋盤)查看左上角雷的個數共40個,右側輸入40,掃描型別選擇“精確數值”,點擊“首次掃描”,

任一格子放置旗子,數量變為39,輸入39進行“再次掃描”,得出找出了旗子的基址為01005194,


2.掃描雷的記憶體地址,因為旗子和雷的初始資料是一樣的,所以先掃描旗子的資料,第一次掃初級棋盤的旗子數量10,轉換到中級棋盤,再次輸入旗子數量40,得出三個基址,

我們發現,這三個地址中,有一個和旗子地址一樣,則排除該地址,剩余兩個地址,我們分別修改數值為1,然后點擊棋盤,修改01005330地址的數值發現棋盤沒有變化,則排除,
修改010056A4地址的數值為1,重繪棋盤,點擊某一格子,發現可通關,則該地址為雷數的記憶體地址,

1.2.2 笑臉的記憶體地址
1.選擇掃描型別為“未知的初始值”,此時表情狀態為“笑臉”,點擊“首次掃描”,

2.點擊棋盤,改變表情的狀態,若表情變化,則掃描型別修改為“變動的數值”;若未變化,則選擇“未變動的數值”,隨后點擊“再次掃描”,反復操作,最后得出兩個地址,


3.此時表情狀態為“戴墨鏡”,看到第二個地址的數值為3,我們再點擊棋盤,改變表情狀態,觀察上述兩個地址的數值變化表情呈“笑臉”時,數值為0,呈“O型”時,數值為1,呈“失敗”時,數值為2,最終發現表情的基址為01005160,
1.2.3 計時器的記憶體地址
1.輸入游戲時間“0”,選擇“精確數值”,開始游戲,游戲時間會開始變動,則掃描型別選擇“變動的數值”,點擊“再次掃描”,反復操作,最后得出地址0100579C,



轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/317671.html
標籤:其他
下一篇:Unity怎么把包體減少
