0x4.U3D游戲逆向修改深化-2

U3D游戲逆向修改深化-2 : U3D單機游戲修改分析實戰(zhàn)


本文主要介紹某網站下載的修改版游戲的分析過程,對于初學者來講,參照已修改游戲進行學習是很有效的學習途徑。




本文樣本是某游戲網站下載的已修改的游戲,與基礎篇中的叢林方塊有些類似,都是修改了金幣的數量。

游戲樣本地址 鏈接:https://pan.baidu.com/s/1t7k4mg5htSrrQKeXtwkj8Q 密碼:tyxc

< 文中的apk修改僅用于研究學習,如涉及權益侵犯請隨時聯系處理。 >


我們照舊先安裝看一下這個游戲都有哪些地方處理過或者需要處理:



發(fā)現兩個異常點:1.打開游戲后有兩次破解版本更新提示   2.金幣被鎖定為100100100

接下來開始我們這節(jié)課的內容:修改分析之數值搜索、代碼對比、關鍵字搜索。


0x1.數值搜索

在基礎課程中,我們已經講過數值搜索了,這里我們再講一遍,不過工具我們不再是用ildasm,而是dnSpy。

1.1  確認腳本文件

‘assetsbinDataManagedAssembly-CSharp.dll’

1.2  搜索數值

打開dnSpy,將Assembly-CSharp.dll拖拽進dnSpy打開,在搜索選項中選擇“數字、字符串”搜索100100100。


1.3  修改數值

得到結果 get_coins,雙擊后可查看已修改的函數,在 “return 100100100”處右鍵單擊,然后選擇“編輯IL指令”,就可以看到IL指令。





如果要再次修改,將其修改為我們所需數值的十六進制形式即可。


0x2.代碼對比

代碼對比在破解版游戲分析是非常有用,可以幫助我們學習破解版是怎樣進行修改的。

那么,既然要對比,我們就需要有一個未破解的版本用來做參照才可以實現對比,于是我們找來了這個樣本的原版。

原版樣本地址 鏈接:https://pan.baidu.com/s/1dy43mrper5oMvLKigkF1vg 密碼:6ylh

< 文中的apk修改僅用于研究學習,如涉及權益侵犯請隨時聯系處理。 >

接下來我們對比一下原版和破解版反編譯后的文件夾,看一下apk打開時的版本更新提示是哪些代碼實現的。對比工具我們采用Araxis Merge。



破解版插入了如下smali文件,并在兩處NativeActivity中對其進行了調用,也就是我們看到的兩次更新提示窗口。



調用代碼如下:

const/16 v0, 0x485a
invoke-static {p0, v0}, Landroid/support/v4/os/UnityPlayerup;->c(Landroid/app/Activity;I)V

java代碼表示為(可在jd-gui中查看):

UnityPlayerup.c(this, 18522);


我們要去掉這個提示的話,刪除這個調用即可。在此不具體分析所插入版本更新窗口的代碼,有興趣的可以分析看一下。

dll腳本也可以進行對比分析,需要用ildasm將其反編譯為il代碼,然后將原版和破解版的il文件進行對比,具體不做演示,大家自己嘗試。


0x3.關鍵字搜索

這部分主要提供給大家一些可利用的搜索關鍵字,可用于金錢、屬性等各方面的搜索。

3.1  金錢類

金幣      gold、coin
鉆石      Gem、diamond

3.2  屬性類

生命      health、life、HP、Max HP
魔法      mp、sp、Power
冷卻      CD、CoolDown、CoolTime
攻擊      attack(atk)、fight、hit、damage
防御      defence(def)
速度      speed、movespeed、attackspeed
3.3  其他類

登錄      login、sendlogin、loginserver
彈窗      Dialog、ShowDialog
按鍵      Button
以上只是介紹部分關鍵詞,更多關鍵詞需要大家在實踐中總結積累。

?