- 精通Cocos2d-x游戲開發(進階卷)
- 王永寶
- 492字
- 2020-11-28 22:36:57
2.2 防止內存修改
如金山游俠、燒餅修改器這類游戲輔助,可以通過修改內存,直接修改玩家的金幣、經驗值等數據,這種修改危險程度最低,也最容易防御。一般玩家修改內存的方法,是通過內存修改工具查找到游戲在內存中的數值,如金幣、經驗值等,然后用該工具修改這塊內存,這樣金幣、經驗等數據就被修改了。
當玩家的金幣是2048個的時候,搜索內存中值為2048的地址,這時候會列出一系列地址,如果太多,可在游戲中改變這個數值,如花掉1個金幣,然后再搜索2047,經過查詢之后最終定位到內存地址,然后直接修改這個地址對應的內容。
一個簡單的防御方法就是使用偏移量來存儲游戲中的關鍵數據,如我們的金幣,擁有兩個屬性,一個是顯示用的屬性,另一個是真實的金幣數據,真實的金幣數據可以是加上一個隨便定義的常量,如3388。當有100個金幣的時候,顯示屬性的值是100,而真實的金幣數據是3488。正常情況下,每次修改金幣的值應該是這樣的:
Money += Change;
但在防御狀態下,修改金幣的值應該是這樣的:
RealMoney += Change; ShowM_oney = RealMoney -3388;
相當于把真實的金幣數據進行了一個簡單的加密,但這個簡單的加密可以有效地防止玩家修改內存,金幣賦值是通過RealMoney計算之后進行賦值,所以玩家修改ShowMoney顯示的金幣數是無用的。