0x5.U3D游戲逆向修改深化-3

U3D游戲逆向修改深化-3 : U3D網(wǎng)絡(luò)游戲簡(jiǎn)單修改實(shí)戰(zhàn)


本文介紹主要對(duì)某Android網(wǎng)游進(jìn)行簡(jiǎn)單分析的過(guò)程:


分析樣本下載 鏈接: https://pan.baidu.com/s/1Lwer1mCX7It2gs3x5j-p8g 密碼: njnj
< 文中的apk修改僅用于研究學(xué)習(xí),如涉及權(quán)益侵犯請(qǐng)隨時(shí)聯(lián)系處理。 >
PS: 由于測(cè)試時(shí)發(fā)現(xiàn)該網(wǎng)游已經(jīng)停服,所以找了一個(gè)這個(gè)游戲的一鍵端,可以自己搭建進(jìn)行使用,詳情參考文末說(shuō)明。

網(wǎng)絡(luò)游戲的修改,本質(zhì)上與單機(jī)游戲并無(wú)太大區(qū)別,本文介紹常規(guī)修改的一些方向和方法。
對(duì)于大多數(shù)游戲而言,我們要修改的一般為 技能、速度、傷害 三個(gè)方面。
我們照舊找出這個(gè)游戲的dll腳本文件,使用dnSpy工具來(lái)進(jìn)行具體的分析,路徑如下:
//assets/bin/Data/Managed/Assembly-CSharp.dll

0x1.技能相關(guān)修改
談到技能,我們一般最先想到的是無(wú)限釋放技能,那么我們無(wú)限釋放技能需要滿足什么條件呢?
冷卻時(shí)間為零是必需的,另外還有很重要的一點(diǎn),就是魔法值,如果可以無(wú)限釋放技能但是很快MP(Mana Point魔法值)消耗完了,那也就沒(méi)辦法釋放了。
將dll腳本文件拖進(jìn)dnSpy,然后搜索關(guān)鍵詞skill看一下結(jié)果(為縮小搜索范圍我們選擇“非泛型類型”,也就是class類):


經(jīng)過(guò)具體查看發(fā)現(xiàn)SkillCastInfo可能是有效的修改點(diǎn),內(nèi)部有名為InitSkillInfo的方法(method),方法中有隊(duì)SkillCD的初始化,我們將其修改為0。




在skillCD寫入內(nèi)存之前,即stfld語(yǔ)句之前插入乘以零的指令,從而將冷卻時(shí)間的初始化值設(shè)置為零。
此時(shí)我們已經(jīng)完成了冷卻時(shí)間的修改,但是無(wú)限技能仍然無(wú)法實(shí)現(xiàn),因?yàn)槟Хㄖ滴覀儾⑽醋鎏幚?,搜索關(guān)鍵詞Mana及MP等均無(wú)有效結(jié)果。
于是我們搜索人數(shù)屬性相關(guān)的智力關(guān)鍵詞 Intell (Intelligence簡(jiǎn)化)


搜索到 get_Intell_absolute_value,將其返回值修改為666666,修改后如下:


此時(shí)無(wú)限技能才算真正修改完成,具體請(qǐng)大家進(jìn)行實(shí)際修改和測(cè)試。

0x2.速度相關(guān)修改
速度相關(guān)的一般兩個(gè)方面,一個(gè)是移動(dòng)速度,一個(gè)是攻擊速度。
我們首先進(jìn)行movespeed和attackspeed的關(guān)鍵詞搜索,發(fā)現(xiàn)有效結(jié)果并不多。


于是我們換另個(gè)思路。,將dll腳本文件用ildasm打開(kāi)后dump出il文件,然后搜索attackspeed以及movespeed。


在搜索結(jié)果中,我們篩選出于attackspeed和movespeed相關(guān)的如下的il代碼(搜索結(jié)果中其余結(jié)果也可能進(jìn)行有效修改)




我們將其就行修改以增加速度,attackspeed可以直接改寫入數(shù)值,movespeed則可以進(jìn)行乘法加倍操作。




至此完成攻擊速度和移動(dòng)速度的修改(修改時(shí)使用IL直接書寫或者使用工具dnSpy進(jìn)行修改請(qǐng)視情況自行決定)。

0x3.傷害相關(guān)修改
傷害的修改主要兩個(gè)思路,強(qiáng)化自身和弱化敵人。
首先是自身強(qiáng)化的修改方向:
在我們進(jìn)行 get_Intell_absolute_value的修改時(shí),我們發(fā)現(xiàn)附近還有一些其他屬性的修改,比如攻擊防御相關(guān)的get_Att_absolute_value與get_Def_absolute_value。



參考智力屬性的修改方式將其返回值修改為666666。



敵人弱化方向:
對(duì)于做任務(wù)刷圖的敵人,屬性的初始化一般采用的關(guān)鍵詞是Monster,我們搜索一下。


我們直接將函數(shù)內(nèi)容修改為:
ldc.i4.0
ret
這樣怪物就無(wú)法進(jìn)行攻擊,從而實(shí)現(xiàn)敵人的弱化。

附:手游私服一鍵本地搭建
這里需要用到VMWare虛擬機(jī),用于運(yùn)行服務(wù)端;
服務(wù)端的虛擬機(jī)鏡像及搭建教程下載路徑 :
感興趣的話,可以去網(wǎng)上找外網(wǎng)搭建教程自行嘗試私服的搭建。

?