內存修改使用trace對進程和內存實施監控,並修改其中的數值。
{ //文本配置 "TextConfig":{ "GameName":"游戲名稱",//顯示之用 "GamePackname":"Android包名",//游戲包名,否則無法識別游戲 "GameVersion":"版本號",//游戲版本號,否則無法識別游戲 "CfgName":"配置名稱",//給你的一鍵修改取一個霸氣的名字吧 "CfgVersion": 1|2|3... //配置的版本編號,最開始為1版本,后續為2,3,4... "Author":"配置作者",//自己定義了配置,請留上你的大名 "Discription":"配置簡述",//一鍵修改配置的使用攻略和注意事項 "ButtonNameModification":"一鍵修改名稱",//默認一鍵修改 "ButtonNameRecovery":"一鍵還原名稱"//默認一鍵還原 }, //搜索配置 "SearchConfig":{ "NeedToPause":true | false //布爾型,默認 true "SearchValueType":1|2|3|4 //整數型,默認4整數 "SearchValue":"V1,V2,V3...", //字符串型,搜索數值V1,V2,V3,最多10個,單數值為精確搜索,多數值為聯合搜索 "SearchRange": "10d", //整數型,其中L為10進制數字,0則不進行聯合搜索 "SearchOffset": "16h",//偏移距離,16進制,用於雙精確等距/強聯合搜索,0則不進行強聯合搜索 }, //篩選-修改-還原配置 "FilterSettingConfig":[ //篩選過濾配置,可以設置多個 { "FilterType":"Values" |"Address" //篩選類型,按值篩選/按地址篩選 "Offset":"16h"//偏移:字符串類型。表示16進制整數。默認為空。 "LastDigits":"16h"//末位數:一般為2~4位。 "SourceMatch":"10d", //原始匹配值。 "SetValueType":1|2|3|4, //設置的值類型。默認4整數型 "SetValueMethod":"equal"|"add",//設置的方法,equal為等值設值,add為差值設值。 "SetValue":"10d", //字符串型,設置的數值大小 "SetValueLocked": false|true //布爾型,默認false。是否需要鎖定數,默認不鎖定。 },//配置1 /* { // // // }//配置2 */ ] }
現在手機端也出現了一些有名的修改器,如燒餅修改器,八門神器,泡椒修改器。這些修改器都是純技術類型的修改器。其內核是建立Linux的搜索基礎之上的,早
期的燒餅修改器,八門神器,借鑒了開源代碼 scanmem 里結構,不過 scanmem 有一個缺陷,搜索速率非常低。比如 ptrace 來調試進程,單內存搜索。就好比我一次抓一把米,一把才1顆。這些修改器優化之后,改為1次抓1把米,1把2048顆米。平鋪在手上,可以篩選出顏色不同的米來。
再后來的過程,崛起了一個叫葫蘆俠的修改器,這個修改器有一個特點,搜索速度較快,可以理解的其使用了比 ptace 更為底層的接口 trace,甚至更底層。以至於搜索速度能夠達到秒的數量級。燒餅2的系列都是要通過ptrace來調試進程,並對進程進行搜索和修改。近期的一些游戲所做的反作弊手段就是通過黑名單,反調試來進行的。anti-ptrace是其中的一種反作弊手段,可是一旦用了更底層的攻擊技術,這項防御技術很單薄。
整個內存修改的過程可以分解為:
輸入數值->搜索數值->篩選數值->修改數值->還原數值
1、數值輸入:
輸入的數值可以為小數,整數。類型可以分為Byte, Word, Dword和Float,當然還有更多,比如Array,Text和Double等。這個可以在Cheat Engine里看到起搜索的類型。
2、搜索數值:
搜索方法很多,一共5種。
a內存搜索:這個很直接,直接輸入地址,搜索數值。
b精確搜索:間接,搜索具體的數值,然后找到目標內存地址。這個需要多次跟蹤搜索過濾掉合適的數值。
c模糊搜索:間接,不特定搜索。根據變化率來進行搜索。根據ΔV 的情況來進行搜索。比如為正,為負,定值來進行搜索。
d聯合搜索:介乎於精確。在一定的內存距離內進行數值搜索。linux里有頁的概念,因此這段內存距離會控制在2048里。
e等距搜索:即搜索A,B。指定A和B 的距離都為L。返回兩個A,B值。
幾個搜索方式的優劣比較:
a內存搜索:快速直接,但很難搜。不同的操作系統,搜索的地址是不一致的,有些動態生成的值,此方法不適合。
b精確搜索:直觀,搜索步驟較多,很難一步搜完。
c模糊搜索:復雜,搜索步驟較多,需要大量篩選數值。
d聯合搜索:較快,搜索步驟最少。
e等距搜索:最快,搜索步驟最少,可以查詢到搜索結果。
如果說要推薦意見修改,那么聯合搜索和等距搜索是最佳搜索方法。
3、篩選數值
a內存搜索:過濾結果只有1個。Nan或者有效。
b精確搜索:搜索結果不定,需要人工篩選。
c模糊搜索:搜索結果復雜不定,需要結合整數,小數的規律來進行過濾。
d聯合搜索:搜索結果很容易確定下來,不過如果距離過小,結果會過少。距離過大,搜索結果會變多。
e等距搜索:結果一般只有幾個。很容易搜索到。
4、修改數值
手動改值:找到指定地址,修改為需要的數值。
自動改值:每一幀率都在進行修改。也就是所謂的鎖定功能。
5、還原數值
手動改值:找到指定地址,改為需要的還原的數值。
一鍵修改的過程:
全自動
{ "TextConfig":{ "GameName":"天天飛車", "GamePackname":"com.tencent.game.SSGame", "GameVersion":"1.2.0.40317", "CfgName":"一鍵吸金", "Author":"bbe", "Discription":"每次開局,一鍵吸金,卡車之后還原再改", "ButtonNameModification":"吸金", "ButtonNameRecovery":"不吸金" }, "SearchConfig":{ "SearchValueType":4,//搜索類型為整數 "SearchValue":"1077936128;1112014848,1", //聯合搜索3.0;50.0;1 "SearchRange":"8"//設置距離為8 }, "FilterSettingConfig":[ { "FilterType":"Values", "SourceMatch":"1",//匹配原始值1 "SetValueType":4, "SetValueMethod":"equal", //等值設置值 "SetValue":"257",//改為257 "SetValueLocked":false//不用鎖定 }, ] }
在上面的這個配置里已經很明顯的設置了如何自動識別游戲包名,游戲版本名。如何搜索,如何自動篩選數值,如何自動修改和還原。
修改器自動運行一遍,就可以實現一鍵修改。