偶爾逛逛本吧發現都是在求各種游戲修改方法的。。漫山遍野的小白。。。于是我就奮起講一點游戲修改的理論吧。[哈哈] 大觸可指出錯誤,手機碼字,就不上圖了。
話說在前面:本帖方法多用于單機游戲,網游限制太多,本帖不做介紹
首先,我們要修改一個游戲要知道什么叫修改游戲,大家關注本吧就應該知道,我們修改的是游戲數據。
那么我們所要修改的這個游戲數據是什么樣的呢?要怎么怎么找到它。
游戲數據跟游戲類型有關,像角色扮演啊模擬經營這類的游戲數據量大一些,可攻入的數據就會多一些,而一些什么動作,競技類的我們不難想到數據就會不多。
數據保存在游戲內存中,分動態內存和靜態內存,動態內存是隨游戲進行而時刻變化并隨游戲結束而停止的數據,靜態內存就是游戲存檔之類的文件數據了。
動態修改
目前用的多的就是動態修改了,把修改器后臺運行然后運行游戲進行搜索,對此,再搜索,再對此,確定后修改或鎖定,比如游戲金錢,資源,體力,道具數量,這是種精確搜索,不多介紹
動態修改還有聯合搜索,這個很好用,比如你看到商店有a,b,c三種商品,分別價格為100,200,300那么你就用修改器聯合搜索100,200,300中間用逗號隔開,或者100,200,300:256后面的“:256”是間隔,間隔范圍在8到4096
搜索出來后再搜索一遍剛才所搜索過的3個價格中的其中一個,目的是縮小范圍
當你確定數據后就可以修改的,一般修改為-9999999 什么的,然后購買你的錢就增加了,注意有的時候修改成負數過大會錯誤,或者無效,所以再試下改成-1還有改成0和1
動態修改介紹下個人認為最好用的功能:模糊搜索
這種方法十分強大,可以在我們不知道數據的情況下對數據進行查找,比如游戲時間,血條,技能持續時間,道具剩余時間,等等會發生變化的數據,
例如:當你釋放一個效果為角色攻擊速度增加的技能,這個技能會持續一段時間,你在技能效果施加成功的一剎那就暫停游戲(修改器也自帶暫停功能,需手動開啟)然后模糊搜索,不確定類型的情況下選擇自動匹配,等待搜索結束點擊繼續搜索最小化然后繼續游戲再暫停打開修改器搜索選擇變小了,以此類推,在技能失效前確定地址
解釋一下原理,你的這個技能是一個有時間限制的技能,當你釋放技能以后游戲內部增加一個時間軸,開始了倒計時,比如是10秒,10秒后這個技能就會失效,于是我們第一步先模糊搜索一下,后面游戲時間倒計時的原因,這個時間軸縮短了,所以后面就是選擇變小了,或者可以在暫停游戲頁面不繼續游戲而再搜索一次無變化,因為我們沒有繼續游戲,所以時間軸沒有發生變化。
這是一個不斷隨時間變化而變化的例子,我們也可以修改類似血條的數據,血條我們是看不見的,但是可以通過受到攻擊掉血或者吃藥補血,可以想象到,攻擊掉血,血量下降,吃藥補血,血量增加,所以前者數據變化為變小了,后者為變大了
靜態修改講到這,順帶提一下,有些游戲數據的地址是會和實際數據不同的,比如1526的游戲幣實際數據為1525,所以,搜索不到可以用模糊搜索解決這一問題
還有,如果游戲有關卡倒計時什么的,在游戲上方或者下方有個倒計時,這是個浮點數據,我們精確搜索時不需要搜索小數點后面的數字,比如52.48我們搜索52就行了
后面我再講內存修改,先講靜態修改,因為內存修改需要了解16進制
靜態修改
首先必須要簡單了解下什么是十六進制,話說現在初中都開始學十六進制了,應該不難理解,游戲中我們看到的數據都是十進制,但是打開存檔或者內存時可以發現,這里會出現英文字母,十進制是0,1,2,3,4,5,6,7,8,9十個數字,9再往大是0,但是前一位加一,這個大家都知道,十六進制其實一樣,0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F十六個,后面的A,B,C,D,E,F分別對應10,11,12,13,14,15十六進制的F往大也是0,然后前一位加一
十六進制數據是2個字符為一個字節,每兩個字符都是靠在一起形成字節的,一個字節是0到255,2個字節就是0到65535,發現沒,用修改器搜索數據時讓我們選范圍就是這個數字,[噴] 那就說明一個數值的類型受他的最大值影響,比如等級,等級一般以100級為滿級,那么他只需要一個字節的位置就能表示,所以數據就是BYTE類型,范圍再0~255(就是2個F),如果是是在0~65535的數據(4個F),類型就是WORD,還有一個最大的,用的最多,就是DWORD類型,范圍是0~4294967295(6個F)這些出現在修改器中的數據就是受16進制的限制而出現的還有些常用的要多記,比如十六進制63是十進制99,這些都可以用十六進制計算器來算,但是用腦子記一些對你在一大堆內存數據中尋找有用數據有很大作用[笑眼]
十六進制還存在一種儲存方式,高低位轉化,這是游戲廠商為了防止數據溢出的方式,同時也給修改者一個檻,簡單講一下,比如一個16進制數是1D5, 高低位換算后是D501, 因為前面說過16進制每兩個字符組成一個字節,所以要再1前面添一個0補齊,就是01D5,高低位換算就是把數據從高到低重新反過來排列,剛才這個是WORD類型數據,如果是DWORD類型,就要再添2個0,高低為換算就是5D0100,這個在32位游戲中廣泛應用
簡單了解下16進制和范圍,然后開始靜態修改吧[太開心]
靜態修改前面說過了,修改游戲存檔,首先要找到游戲存檔文件所在,
一般都在data/data/里面游戲對應的文件夾。也有在android/data/里面
文件夾文件那么多,哪個是存檔呢,這個很簡單,運行游戲,用文件管理看文件時間就行了
用修改器打開或者16進制編輯器打開,打開后迎面而來的就是一大波16進制數據了,在這里,你也可以搜索數值,編輯修改數值,有人說了,那樓主這和動態修改沒的比吧,既麻煩又不實用
接下來講一下靜態修改絕對做不到的一個修改。
在動態修改中我們可以通過模糊搜索對一個空背包的第一個位置不斷變化道具再搜索來尋找道具代碼(有變化無變化或者變大變小尋找),最后比如我們發現紅瓶對應代碼為4287,那就讓我們買上幾個,比如一個背包只帶了5個紅瓶,把4287轉化為16進制是10BF,我們打開靜態內存,然后搜索10BF或者10BF05,或者10BF0005因為不知道數據間有沒有間隔,所以多變化搜索一下 (高低位換算也要試) ,最后找到這個紅瓶的位置,接下來我們就可以修改這個05來修改紅瓶數量。但是我們通過觀察可以發現在這個這組數據后面有大量的00,聰明的你可能就發現了,這就是背包后面其他位置道具地址,通過添加代碼和數量達到憑空修改道具的目的![真棒]
通常很多數據相差不會太遠,血量地址旁邊經常出現魔法值地址
結合動態的模糊搜索然后用內存修改可以達到很多目的,比如修改人物性別,變化寵物,改變裝備附魔等等難以預計的變化
新聞熱點
疑難解答