Cheat Engine(簡稱CE,中文名-作弊引擎),用於查找、修改內存數據,是游戲逆向的基礎工具。
本文僅介紹基礎操作。
1.打開進程
運行游戲程序,並將CE附加到進程
2.尋找數據地址,並修改數據
限定條件進行搜索,直至找到數據。掃描數據時可先暫停游戲
舉例:已知血量初始值
a.游戲開始時,暫停,搜索初始值。
b.開始游戲,讓血量減少,暫停,檢索減少的值。
c.重復a和b的操作,直到左邊出現符合條件的數值
3.指針數據
如果上面的步驟並沒有效果,說明找到的是可變地址(當然也可能是找錯了),該地址的數據是由一個指針改變的,我們必須找到是誰在改變數據,即最初的指針(具體有多少級指針不確定)
a.禁止指針修改數據
b.一級指針找基指針
目的:找到最開始的指針 ,加上偏移, 就指向了找到的數據
c.多級指針
與找一級指針類似,多找幾層就行了,直到地址是綠色的(找到了基指針)。注意指針偏移,最后手動添加地址時,點擊Add Offset添加偏移。
例:三級指針
[[[基指針 + 偏移1]+偏移2]+偏移3],Add Offset填入偏移1、2、3。
4.inline hook
在原代碼(地址Y)添加自己的代碼或修改原代碼。
原理:
1.在目標進程申請內存空間(代號A),在A中寫自己的匯編代碼。(A中最后要返回到修改指令的下一條(jmp Y + 5))
2.將Y的指令改為 jmp A,跳到自己申請的內存中執行代碼
3.跳回到Y+5
自動匯編→模板→代碼注入→(自動填入了地址)點OK,得到右圖
5.內存查看
有些數據難以掃描得到,可以通過內存查看(點擊 內存查看 按鈕),內存查看器的匯編代碼下面的窗口。
內存地址難以獲取,但是由於開發程序時,數據多是結構體形式,比如人物屬性(血量,藍,。。。等)在一個結構體內。
可以通過容易找的內存地址來判斷同一個結構體內其他內存地址的大致范圍。(上下多看看)
當游戲運行時,根據情況的不同,內存數據會變化。找到變化的地址(數據會變色),在主窗口手動添加地址就能改了。