日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

外挂学习之路(11)--- 背包数据的遍历

發(fā)布時間:2024/4/11 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 外挂学习之路(11)--- 背包数据的遍历 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

查找數(shù)據(jù)主要包括:背包數(shù)據(jù)遍歷、NPC數(shù)據(jù)遍歷、怪物數(shù)據(jù)遍歷、地面物品數(shù)據(jù)遍歷、技能列表遍歷、周圍玩家數(shù)據(jù)遍歷、地圖數(shù)據(jù)的查找、人物信息的查找等等。

本次只討論需要遍歷的數(shù)據(jù)

為什么要遍歷數(shù)據(jù)?

一般來講是給我們找到的call當參數(shù)使用的,比如我們找到打怪call,但是這個call需要一個參數(shù)是怪物的指針,我們上哪去弄這個指針?我們只能去遍歷怪物數(shù)據(jù),這些數(shù)據(jù)包括怪物指針,怪物的坐標,怪物的血量,名字等等信息,把有用的信息提取出來,用編程語言寫個數(shù)據(jù)結(jié)構(gòu)把它存起來供我們使用時候用。

需要遍歷哪些數(shù)據(jù)?

不同數(shù)據(jù)需要不同的信息,如果是提供給call使用的話,我們主要看call需要什么類型的數(shù)據(jù),是怪物的指針啊,還是怪物的ID,當然我們也可以遍歷一些用處比較少的屬性,比如怪物名字

找到的遍歷結(jié)果一般是什么樣子的?

本次不討論鏈表結(jié)構(gòu)和二叉樹結(jié)構(gòu),只討論數(shù)組結(jié)構(gòu),比如我們找到的背包物品個數(shù)的數(shù)組的形式可能是:

個數(shù)=[[[[[基地址]+a]+b]+格子編號*0x40]+c

這個時候我們就發(fā)現(xiàn)[[[[基地址]+a]+b]+格子編號*0x40是某個格子的指針,從而推導(dǎo)出其他屬性,比如我們可能推導(dǎo)出

名字=[[[[[基地址]+a]+b]+格子編號*0x40]+d

最大疊放=[[[[[基地址]+a]+b]+格子編號*0x40]+e

使用等級=[[[[[基地址]+a]+b]+格子編號*0x40]+f

物品ID=[[[[[基地址]+a]+b]+格子編號*0x40]+h

………

所謂推到辦法,就是看看背包數(shù)據(jù),再看看內(nèi)存數(shù)據(jù)比較下,猜測出偏移,再驗證下,驗證方法:修改內(nèi)存,看看物品有沒有相應(yīng)的更改。

?

如何遍歷背包物品數(shù)據(jù)

好了,不廢話,說說如何查找這個數(shù)組,首先我們必須有個切入點,背包物品最好從背包中某項物品的個數(shù)入手,因為很多情況這個數(shù)目不止一個,并且可以改變,比如血瓶,右擊一下就減少一瓶。


我們直接有CE搜索995,使用一瓶搜索994,搜索出來兩個結(jié)果,


再改變數(shù)量發(fā)現(xiàn)還是這個兩個地址,這兩個地址都是正確的,但是他們表達的含義不一樣,我們將血瓶移動到第二個格子看看,發(fā)現(xiàn)一個值變?yōu)?,這就說明這個地址指向的是背包第一個格子中物品的數(shù)量,而不是血瓶數(shù)量


我們查看訪問這個地址的代碼,然后把血瓶移回第一個格子,看到代碼


打開OD,找到代碼,找到代表物品數(shù)量的表達式[eax+14],下面的工作就是找基地址,找這個eax的基地址。

第一個格子中物品的數(shù)量=[[[[[[[[15AC044]+10+4]+4]]]+0C+4]+30+4]+ 0*0x28 +0x14]

如何確定這是個數(shù)組呢,以及第二個格子和第一個格子的差別應(yīng)該差在哪里?這個一般在尋找基地址時候就會發(fā)現(xiàn),

比如,舉個例子,我們首先得到? 第一個格子中物品的數(shù)量=[eax+14],我們挪動血瓶發(fā)現(xiàn)eax的值每個格子都不一樣,并且是個等差數(shù)列,這不就明顯了嗎?哈哈


研究游戲名字為《龍武》實戰(zhàn)檢測,他的背包數(shù)據(jù)很奇葩,有兩個基地址,前32個格子統(tǒng)一基地址,剩余格子(不足32個)另一個基地址。最終確定格子中物品數(shù)量表達式為:

前32個格子:[[[[[[[15AC044]+10+4]+4]]]+0C+4]+30+4]+ 格數(shù)*0x28 +0x14 ? ? ? ? 格數(shù)范圍0-1f
剩余格子: ? ? [[[[[[15AC044]+10+4]+4]+8]+0C+4]+30+4] + 格數(shù)*0x28 + 0x14

?

尋找數(shù)據(jù)的思路:

上面就是按照數(shù)量的找法,也有看過相關(guān)教程按照每個格子的指針找的,即,每個(些)都應(yīng)該有個指針,格子會盛放這些指針,互相改變格子中的物品,這些指針也應(yīng)該隨之改變,并且空格子的指針應(yīng)該為0,按照這個思路用CE找,也可以找到一個數(shù)組,一個指針的數(shù)組。但是這些指針是否有用的,如果有call直接使用這些指針的話,這些指針就是游泳的,如果沒有的話,還有需要研究這些指針指向的地址盛放的東西的話,這個研究方式就不太好了,最好是直接下手,需要數(shù)量數(shù)組就從數(shù)量下手,需要ID數(shù)組就從ID下手,需要名字就從名字下手。

?

追尋基地址的一些實戰(zhàn)感悟:

感悟1:

毫無疑問如果可以用CE就能找到基地址的話,那實在是太方便了,快速而高效,但是有些時候我們只用CE找不到基地址,這個時候我們只能用OD了,最好是OD和CE結(jié)合著用,沒找到一個地址就先用CE試一下。有時純CE找不到基地址原因如下:

1.用CE搜索一個中間地址,搜索搜索結(jié)果為空。(中間地址:非基地址,如:物品個數(shù)=[[435C9660+0C+4]+30+4] + 格數(shù)*0x28 + 0x14,這其中的不是基地址,我們把它簡稱為中間地址)

2.搜索到了地址,右鍵查看訪問代碼,結(jié)果沒有代碼出現(xiàn)

3.出現(xiàn)了訪問代碼,最后也找到了一個綠色的地址,突然發(fā)現(xiàn)這個綠色地址盛放值是可以變動的,突然為0了等等。

?

感悟2:

有時候用OD跟蹤找基地址,會發(fā)現(xiàn)越來越深,這個時候最好做個中間記錄,省的一次追不完,下次又得重頭開始追查,比如我們追背包中物品數(shù)量的基地址,可以先做個記錄

物品數(shù)量= ?[[435C9660+0C+4]+30+4]+ 格數(shù)*0x28 + 0x14

并且記錄下追到的代碼地址,下次接著從這塊代碼入手,

00E07BD1 8B4D EC MOV ECX,DWORD PTRSS:[EBP-14] 00E07BD4 83C1 10 ADD ECX,10 ; ecx=11014270 00E07BD7 E8 A4140000 CALLLWClient.00E09080 ; 關(guān)鍵call,在堆棧中寫入435C9660 00E07BDC 8D55 F0 LEA EDX,DWORD PTRSS:[EBP-10] 00E07BDF 52 PUSH EDX

這個結(jié)果最好驗證下(驗證方法,dd [[435C9660+0C+4]+30+4] + 格數(shù)*0x28 + 0x14,如果435C9660是個堆棧地址需要在代碼處下斷點再執(zhí)行命令)

?

感悟3:

基地址嵌套很深,最后追到基礎(chǔ)地址卻忘了一路是怎么過來的,不得不模擬走好幾遍才能把最后的表達式寫出來,這時有個方法,很有效,方法如下:

比如我們先追到了一段,記錄下

品數(shù)量= ?[[435C9660+0C+4]+30+4]+ 格數(shù)*0x28 + 0x14

接著我們追這個435C9660的地址是怎么來的,沒遇見一次賦值記錄下來,沒有偏移并且沒有指針就不記錄了,比如move eax,ecx就不用記錄了,追的地址沒變,記錄下每次地址改變值,直接記錄值就可以了,記寄存器名字反倒不方便,記錄如下:

435C9660=[435C9740] 435C9740=[435C9420] 435C9420=[1B757924] 1B757924=1B757920+4 1B757920=[11014280+4] 11014280=11014270+10 11014270=[15AC044]

把這些地址迭代進去就可以得到最終的基地+偏移表達式了

物品數(shù)量= [[[[[[[15AC044]+10+4]+4]]]+0C+4]+30+4]+ 格數(shù)*0x28 +0x14




總結(jié)

以上是生活随笔為你收集整理的外挂学习之路(11)--- 背包数据的遍历的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。