一.《傳奇M》裝備欄遍歷的突破口
尋找突破口
1.首先根據(jù)大多數(shù)游戲而言,裝備欄中一般記錄的是裝備的對象或者裝備ID,那么當我們穿裝備或者脫裝備肯定會有相應的值在改變
2.我們就從這里入手,當穿或脫裝備的時候,使用CE搜索0然后通過改變或者未改變來篩選結(jié)果
3.接下來我們操作試一試這個思路可不可以

4.點擊首次掃描,可以搜索到很多值,這個時候我們并不知道裝備欄存的是對象還是ID,我們就通過改變或者未改變來篩選結(jié)果

5.然后穿或者托裝備,繼續(xù)用CE搜索變動的值,因為肯定有個值在記錄這個裝備的信息,比如我們上面說的裝備對象或者裝備ID之類的

6.當我們不斷的過濾掃描后,發(fā)現(xiàn)結(jié)果變少了,但是還是很多,那么我們就可以在穿上或者脫下裝備的情況下篩選結(jié)果數(shù)量,這里尤其注意我們穿上脫下的裝備是同一個!

7.好了,經(jīng)過我們的不變篩選,最終的結(jié)果很少了,但是還有1000多個,這樣也不利于我們找數(shù)據(jù),我們也觀察到在這1000多個結(jié)果中絕大多數(shù)都是類似ID而不是地址

8.那么我們想一下會不會存的就是裝備的ID呢?那么我們就需要拿到之前我們將的背包遍歷中的裝備ID:1C5E2DD9BCC88FD6,拿到【木劍】裝備的結(jié)構(gòu)體地址,我們在XDBG查看內(nèi)存值,這個結(jié)構(gòu)體首地址+0的偏移的地址存的值1C5E2DD9BCC88FD6就是ID

9.這里我也開發(fā)了一套傳奇M腳本SDK,我們點擊背包遍歷可以看到【木劍】這個裝備的ID是1C5E2DD9BCC88FD6,這個ID我把他命名為CID

10.好!確定了ID,我們直接CE搜索這個ID值,注意在穿上裝備的情況下

11.驚奇的發(fā)現(xiàn),結(jié)果變?yōu)榱??。?!what?弄下嘞?老師你在逗我呢?害我看那么多文字,結(jié)果不對

12.額額額,這里我要說明下, 我們要學會培養(yǎng)同學們的思考問題的能力,所以我在分析正確之前必須要講一下這個,因為絕大數(shù)同學都會這樣搜索!
正確突破口
1.上面我們觀察到ID是不行了,難道是對象嗎?
2.經(jīng)過我們搜索對象來回變動也不行,難道我們沒有別的突破口呢?
3.其實是有的,還有兩種方法,第一種是通過脫裝備CALL來需要參數(shù)的來源,因為脫裝備的流程肯定會去遍歷裝備欄,這種方式是最簡單的,但是需要先找到CALL
4.還有一種方法是通過一種搜索值的潛規(guī)則!
5.好!既然要寫好帖子那么就用最不常用的方法的給大家講下這個潛規(guī)則是什么意思
6.他這個裝備欄其實的存儲規(guī)律是,當穿裝備的時候才會分配內(nèi)存
7.而當脫裝備的時候,之前穿的時候分配的內(nèi)存是不會被銷毀的!
8.換一句話說我們在首次搜索未知初始值后,當穿裝備才用變動的值搜索,當脫裝備的時候要用未變動的值搜索?。?!這里就是核心關(guān)鍵點!相信很多同學都不太明白這里
9.其實呢!我們還可以通過一個現(xiàn)象去觀察到,就是這款游戲很奇怪!不知道同學們發(fā)現(xiàn)沒?當我們穿裝備的時候游戲會卡頓一下,而當我們脫裝備的時候會比較流暢一點,那么我估計和我說的那個潛規(guī)則有關(guān)系,這里也只是猜測!
10.好了廢話不多說我們來搜索看看,記住我說的“當穿裝備才用變動的值搜索,當脫裝備的時候要用未變動的值搜索”
11.首次搜索位置初始值,結(jié)果有很多

12.然后通過我說的“當穿裝備才用變動的值搜索,當脫裝備的時候要用未變動的值搜索”,關(guān)鍵點就是脫的時候要用未變


13.通過不斷地搜索改變,搜索出來的結(jié)果如下,發(fā)現(xiàn)就還有100多個結(jié)果,非常好!

14.這個時候我們拿到這些地址在XDBG觀察這些值,結(jié)果在第二個地址就發(fā)現(xiàn)了我們需要的

15.查看穿裝備的時候這個內(nèi)存的變化

16.當我們脫下發(fā)現(xiàn)這個值不會變的

17.然后當再次穿裝備,就會發(fā)現(xiàn)變動了

18.這個時候就需要再這個地址下寫入斷,看看能找到遍歷嗎

19.發(fā)現(xiàn)r15地址掛在一個UI控件相關(guān)對象上,這樣就不對了,我們需要換一個思路,既然UI上掛這個r15地址,那么我們用CE搜索這個分配的內(nèi)存地址,看看遍歷應該也會掛著這個地址
20.注意分配的地址不是r15是寫入的那個地址值

21.CE搜索到18個結(jié)果

22.一個一個觀察,然后下斷就可以找到遍歷了,這里就比較簡單了
23.找到一個結(jié)構(gòu)體首地址,那么這個就是了

24.看一下內(nèi)存,0x10結(jié)構(gòu)體存的是裝備欄中存裝備的2個對象,我們之前搜索的就是第一個對象


25.下寫入就可以來到遍歷的地方了

26.好了!這一貼我們就講完了,主要是介紹一種機制和一種CE搜索內(nèi)存值的方法,可能不是最好的但是我們需要去了解它,這樣才會以便不必只需
27.感謝支持迪大學院,希望多多點贊和關(guān)注,后續(xù)還有很多帖子不定時更新285530835