運行內存數據加密加密

前言

對於單機遊戲,或者客戶端跑遊戲邏輯且服務器不驗證的網遊,需要一些反作弊手段。 
內存數據加密, 遊戲數據合理性檢測, 服務器重跑驗證等都是有效的方案。 
本文主介紹內存數據加密。

正文

內存修改器原理:

修改器修改的數值都是在內存中常駐的,也就是說,數值在內存中的地址是不變的。

我們通過一個例子來看修改器的基本流程。 
比如遊戲內金幣爲100, 修改器先搜100,會得到值爲100的變量內存地址。 
等金幣變200後,再搜200。 
一般重複3到4步操作,修改器就能定位到金幣這個變量所在的內存地址。 
接着就是修改。

在基本搜索之外,一些強大的修改器還提供了模糊搜索和反加密搜索。

模糊搜索: 
一些類似於血條等看不到具體數字的數值,模糊搜索提供了搜索“變大”、“變小”、“變化了”、“沒變化”等操作,進行內存篩選。 
模糊搜索的步驟比直接搜數值要多,一般要重複7到10步操作才能找到變量對應的內存地址。

反加密搜索: 
顧名思義,當數值經過加密後存放到內存中時,需要反加密才能找到內存地址。一般都是簡單的異或加密或者倍值加密公式。

如何進行內存加密

內存加密一般分爲可逆加密和不可逆加密

可逆加密

顯示的數據 ~= 內存的數據。

將內存中常駐的數據加密起來,在顯示的時候解密即可。 
例如簡單的異或加密或者y = nx + m。 
有興趣的可以搜索一些複雜的加密算法。

不可逆加密:

顯示的數據 == 內存的數據。將存儲變量加密,保存在驗證變量中。

在每次使用變量之前,將變量加密與驗證變量對比,這樣就能發現是否內存被修改。 
例如計算變量的md5值,並保存起來,下次取值時,先進行md5驗證。

除了加密:

除了加密外,還有些很有用的小技巧

不斷變化敏感數值的內存存儲地址:將讀寫變量的方法封裝成set和get兩方法, 調用set方式時自動切換變量存儲地址、變化加密密鑰等。
取敏感數值時進行範圍判斷。比如商店商品價格不可能爲負數,單局戰鬥獎勵數量不可能突破天際。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章