本文主要介紹某網(wǎng)站下載的修改版游戲的分析過(guò)程,對(duì)于初學(xué)者來(lái)講,參照已修改游戲進(jìn)行學(xué)習(xí)是很有效的學(xué)習(xí)途徑。
本文樣本是某游戲網(wǎng)站下載的已修改的游戲,與基礎(chǔ)篇中的叢林方塊有些類似,都是修改了金幣的數(shù)量。
游戲樣本地址 鏈接:https://pan.baidu.com/s/1t7k4mg5htSrrQKeXtwkj8Q 密碼:tyxc
< 文中的apk修改僅用于研究學(xué)習(xí),如涉及權(quán)益侵犯請(qǐng)隨時(shí)聯(lián)系處理。 >
我們照舊先安裝看一下這個(gè)游戲都有哪些地方處理過(guò)或者需要處理:
發(fā)現(xiàn)兩個(gè)異常點(diǎn):1.打開(kāi)游戲后有兩次破解版本更新提示 2.金幣被鎖定為100100100
接下來(lái)開(kāi)始我們這節(jié)課的內(nèi)容:修改分析之?dāng)?shù)值搜索、代碼對(duì)比、關(guān)鍵字搜索。
0x1.數(shù)值搜索
在基礎(chǔ)課程中,我們已經(jīng)講過(guò)數(shù)值搜索了,這里我們?cè)僦v一遍,不過(guò)工具我們不再是用ildasm,而是dnSpy。
1.1 確認(rèn)腳本文件
‘a(chǎn)ssetsbinDataManagedAssembly-CSharp.dll’
1.2 搜索數(shù)值
打開(kāi)dnSpy,將Assembly-CSharp.dll拖拽進(jìn)dnSpy打開(kāi),在搜索選項(xiàng)中選擇“數(shù)字、字符串”搜索100100100。
1.3 修改數(shù)值
得到結(jié)果 get_coins,雙擊后可查看已修改的函數(shù),在 “return 100100100”處右鍵單擊,然后選擇“編輯IL指令”,就可以看到IL指令。
如果要再次修改,將其修改為我們所需數(shù)值的十六進(jìn)制形式即可。
0x2.代碼對(duì)比
代碼對(duì)比在破解版游戲分析是非常有用,可以幫助我們學(xué)習(xí)破解版是怎樣進(jìn)行修改的。
那么,既然要對(duì)比,我們就需要有一個(gè)未破解的版本用來(lái)做參照才可以實(shí)現(xiàn)對(duì)比,于是我們找來(lái)了這個(gè)樣本的原版。
原版樣本地址 鏈接:https://pan.baidu.com/s/1dy43mrper5oMvLKigkF1vg 密碼:6ylh
< 文中的apk修改僅用于研究學(xué)習(xí),如涉及權(quán)益侵犯請(qǐng)隨時(shí)聯(lián)系處理。 >
接下來(lái)我們對(duì)比一下原版和破解版反編譯后的文件夾,看一下apk打開(kāi)時(shí)的版本更新提示是哪些代碼實(shí)現(xiàn)的。對(duì)比工具我們采用Araxis Merge。
破解版插入了如下smali文件,并在兩處NativeActivity中對(duì)其進(jìn)行了調(diào)用,也就是我們看到的兩次更新提示窗口。
調(diào)用代碼如下:
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);
我們要去掉這個(gè)提示的話,刪除這個(gè)調(diào)用即可。在此不具體分析所插入版本更新窗口的代碼,有興趣的可以分析看一下。
dll腳本也可以進(jìn)行對(duì)比分析,需要用ildasm將其反編譯為il代碼,然后將原版和破解版的il文件進(jìn)行對(duì)比,具體不做演示,大家自己嘗試。
0x3.關(guān)鍵字搜索
這部分主要提供給大家一些可利用的搜索關(guān)鍵字,可用于金錢、屬性等各方面的搜索。
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
登錄 login、sendlogin、loginserver 彈窗 Dialog、ShowDialog 按鍵 Button