本文主要介紹某網(wǎng)站下載的修改版游戲的分析過程,,對(duì)于初學(xué)者來講,參照已修改游戲進(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è)游戲都有哪些地方處理過或者需要處理:
發(fā)現(xiàn)兩個(gè)異常點(diǎn):1.打開游戲后有兩次破解版本更新提示 2.金幣被鎖定為100100100
接下來開始我們這節(jié)課的內(nèi)容:修改分析之?dāng)?shù)值搜索,、代碼對(duì)比,、關(guān)鍵字搜索。
0x1.數(shù)值搜索
在基礎(chǔ)課程中,,我們已經(jīng)講過數(shù)值搜索了,,這里我們?cè)僦v一遍,不過工具我們不再是用ildasm,,而是dnSpy,。
1.1 確認(rèn)腳本文件
‘a(chǎn)ssetsbinDataManagedAssembly-CSharp.dll’
1.2 搜索數(shù)值
打開dnSpy,將Assembly-CSharp.dll拖拽進(jìn)dnSpy打開,,在搜索選項(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è)未破解的版本用來做參照才可以實(shí)現(xiàn)對(duì)比,于是我們找來了這個(gè)樣本的原版,。
原版樣本地址 鏈接:https://pan.baidu.com/s/1dy43mrper5oMvLKigkF1vg 密碼:6ylh
< 文中的apk修改僅用于研究學(xué)習(xí),,如涉及權(quán)益侵犯請(qǐng)隨時(shí)聯(lián)系處理。 >
接下來我們對(duì)比一下原版和破解版反編譯后的文件夾,,看一下apk打開時(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