記一次安卓Unity3d游戲的逆向分析

使用到的工具

ApkToolBox
.NET Reflector
Reflexil(.NET程序編輯器)

怎么判定它是Unity游戲呢
一般的路徑格式是這樣的assets\bin\Data\Managed
[如果是個Unity游戲卻找不到dll文件那么騷年放棄吧咆耿。。艰额。]


一般情況下都是修改上圖的這個dll文件
[如果想要搜索的東西不在這個dll文件可借用UltraEdit、EditPlus、Notepad++等常用編輯工具輔助搜索來判斷對哪個dll文件進行修改

以Jam City這款游戲為例來作以下分析:

內購破解部分就不講了甫窟,因為下面將要修改的比內購的要來的痛快
用ApkToolBox反編譯之后找到dll文件就是上圖的那個文件用.NET Reflector打開
[.NET Reflector工具的基本使用方法請自行百度]
在手機上試玩了下這個游戲 籃板和搶斷的路線根本就不明確嘛籽前。拾枣。闹瞧。

金幣-Coin、等級-Level 那么著重修改這兩個值吧

按下F3搜索肄梨,切換到方法搜索



搜到的內容這么多 改哪個呢 頭疼凹啤闻丑!

等等!unity3d提供的有存檔類把薄嗦嗡!這是一大重要的切入點O(∩_∩)O~

unity3d提供了一個用于本地持久化保存與讀取的類——PlayerPrefs。其工作原理非常簡單饭玲,以鍵值對的形式將數(shù)據(jù)保存在文件中侥祭,然后程序可以根據(jù)這個名稱取出上次保存的數(shù)值。
PlayerPrefs類支持3種數(shù)據(jù)類型的保存和讀取咱枉,浮點型卑硫,整形,和字符串型蚕断。

游戲本地存檔的主要方式無外乎xml文件和數(shù)據(jù)庫存儲兩種欢伏,我們安裝運行該游戲并簡單的通過買物品和升級改變金幣和等級的數(shù)值。

然后通過R.E.管理器進入/data/data/com.batteryacid.jamcity/shared_prefs/
果然我們發(fā)現(xiàn)了命名包含playerprefs的xml存檔文件


查看該文件亿乳,如下圖硝拧,我們發(fā)現(xiàn)了與游戲中數(shù)值對應的兩個 字符串-整型 鍵值對條目:
金幣Currency和等級CurrentLevel


我們回到.NET Reflector 切換到類搜索径筏,搜索PlayerPrefs得到下圖結果,雙擊進入位于Assembly-CSharp集中的PlayerPrefsx類


雙擊進入GetInt(String,Int32)整型方法障陶,Tools ---- reflexil v1.6 開啟reflexil工具


然后在第一行“Create new...”新建字符串類型(OpCade代碼為ldstr)滋恬,最后“Insert before select”插入到第一行前


在第二行新建整型(OpCade代碼為ldc.i4)


在第三行新建方法(OpCade代碼為call),
并在PlayerPrefsx類中選擇GetInt(System.String,System.Int32)方法


這樣抱究,我們就將Currency強制設置為66666668了
回到dll文件名這里恢氯,右鍵鼠標移到Reflexil v1.6保存dll


保存之后,F(xiàn)5刷新一下鼓寺,如下圖勋拟,代碼中顯示的是強制設置為了66666668


同理,我們也將等級CurrentLevel也強制設置為20


保存dll文件用IDE編譯出來apk 看看效果

好了妈候,初始金幣和等級都修改成功

步驟回顧:
1敢靡、反編譯apk
2、利用.NET Reflector反編譯dll
3苦银、通過Unity3d的PlayerPrefs方法了解其寫入讀取過程
4啸胧、通過查找存檔xml文件找到相應控制條件
5、在dll中找到相應位置修改代碼段

總結:
本文主要介紹安卓unity3d游戲的本地數(shù)據(jù)的修改方法幔虏。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末纺念,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子所计,更是在濱河造成了極大的恐慌柠辞,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件主胧,死亡現(xiàn)場離奇詭異叭首,居然都是意外死亡,警方通過查閱死者的電腦和手機踪栋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門焙格,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人夷都,你說我怎么就攤上這事眷唉。” “怎么了囤官?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵冬阳,是天一觀的道長。 經常有香客問我党饮,道長肝陪,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任刑顺,我火速辦了婚禮氯窍,結果婚禮上饲常,老公的妹妹穿的比我還像新娘。我一直安慰自己狼讨,他們只是感情好贝淤,可當我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著政供,像睡著了一般播聪。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上鲫骗,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天犬耻,我揣著相機與錄音,去河邊找鬼执泰。 笑死,一個胖子當著我的面吹牛渡蜻,可吹牛的內容都是我干的术吝。 我是一名探鬼主播,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼茸苇,長吁一口氣:“原來是場噩夢啊……” “哼排苍!你這毒婦竟也來了?” 一聲冷哼從身側響起学密,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤淘衙,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后腻暮,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體彤守,經...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年哭靖,在試婚紗的時候發(fā)現(xiàn)自己被綠了具垫。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡试幽,死狀恐怖筝蚕,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情铺坞,我是刑警寧澤起宽,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站济榨,受9級特大地震影響坯沪,放射性物質發(fā)生泄漏。R本人自食惡果不足惜腿短,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一屏箍、第九天 我趴在偏房一處隱蔽的房頂上張望绘梦。 院中可真熱鬧,春花似錦赴魁、人聲如沸卸奉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽榄棵。三九已至,卻和暖如春潘拱,著一層夾襖步出監(jiān)牢的瞬間疹鳄,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工芦岂, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留瘪弓,地道東北人。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓禽最,卻偏偏與公主長得像腺怯,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子川无,可洞房花燭夜當晚...
    茶點故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內容

  • 更新:【面試題含答案】http://bbs.9ria.com/thread-288394-1-1.html 高頻問...
    好怕怕閱讀 4,719評論 3 52
  • 《騰訊桌球:客戶端總結》 本次分享總結呛占,起源于騰訊桌球項目,但是不僅僅限于項目本身懦趋。雖然基于Unity3D晾虑,很多東...
    吳秦閱讀 24,386評論 12 142
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,510評論 25 707
  • 一、溫故而知新 1. 內存不夠怎么辦 內存簡單分配策略的問題地址空間不隔離內存使用效率低程序運行的地址不確定 關于...
    SeanCST閱讀 7,777評論 0 27
  • 一份能讓我感覺吃的飽飽的仅叫,直到說'謝謝款待'的愛帜篇。你就是這樣的,小師弟惑芭,如果有天我一貧如洗坠狡,我希望最后的行李是你。...
    與爾熙閱讀 141評論 0 0