如何反編譯UNITY遊戲?

更新於 發佈於 閱讀時間約 3 分鐘
在撰寫這篇文章之前,我曾認為Unity的遊戲比使用JavaScript編寫的網頁遊戲更安全。因為編譯出的遊戲apk檔案是以二進制形式儲存,相較於使用純文字JavaScript程式碼建立的遊戲,要逆向工程遊戲應該非常困難。
然而,在進行了一些實驗後,我發現我的理論是錯誤的,因此決定寫下這篇教學文章。
通過使用IL2CPP作為腳本後端來編譯遊戲,可以輕鬆從apk檔案中逆向還原出C#源代碼,這讓惡意駭客有能力查看您在遊戲中實現了哪些類、方法、函數、屬性,甚至是邏輯。
在本教學中,您將了解在Android平台上逆向工程基於Unity的遊戲有多容易。

這是何時發生的?

自2019年8月1日起,Google要求所有遊戲支持64位架構,Unity開發者需要在構建和發布遊戲到Google Play商店時啟用IL2CPP腳本後端功能。 這可能存在公開發現遊戲代碼的風險。
參考資料:https://developer.android.com/distribute/best-practices/develop/64-bit

使用Unity的IL2CPP模式編譯Android遊戲

選擇IL2CPP的後台模式來編譯遊戲

反組譯 apk 檔案

  • 下載和設定 apktool
  • 執行apktool指令來解壓縮 apk 檔案
apktool d -r -s [your game].apk
  • 你可看到解出來的檔案如下
/Assets/ : 包含美術和聲音文件,
/lib/arm64-v8a/libil2cpp.so: 包含遊戲代碼
Assets/bin/data/Managed/Metadata/global-metadata.dat: 包含ill2cpp.so中的類名、屬性、字符串映射表。

逆向工程DLL文件

  • 下載 Il2CppDumper
  • 將global-metadata.dat和libil2cpp.so複製到ll2CppDumper-v6.6.2文件夾中
cp Assets/bin/data/Managed/Metadata/global-metadata.dat to ll2CppDumper-v6.6.2
cp lib/armeabi-v7a/libil2cpp.so ll2CppDumper-v6.6.2
執行Il2CppDumper.exe並選擇global-metadata.dat 和 libil2cpp.so檔案
你可看到會產生出一個DummyDll檔案目錄

下載 dnSpy

使用dnSpy打開DummyDLL中的Assembly-CSharp.dll
  • Assembly-CSharp.dll包含您的遊戲源代碼和相關庫文件。
  • 這個工具讓您查看公開的代碼和類別。

總結

在本教學中,您學到了只要您熟悉一些工具,逆向工程Unity Android遊戲是件非常容易的事。
接下來,我將會分享一系列文章。關於如何保護您的Unity遊戲免受黑客攻擊和其他主題。
朋友們,如果您喜歡這篇文章,請給按點👏來支持一下。
謝謝您的閱讀!
原文發佈於 Game Tech Tutorial
分享技術文章解決問題及生活點滴。技術包括雲端技術(AWS, GCP, Azure)的實戰經驗、雲端證照考試指南、Unity遊戲開發、DevOps、SDK,手機遊戲和應用程式及網站開發。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
你可能也想看
Google News 追蹤
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
在Android平台上探索角色扮演遊戲的世界,是許多遊戲愛好者的最愛。隨著手機遊戲的不斷演進,現在的RPG遊戲已經讓人目不暇給。今天我們將帶您深入了解最受歡迎的Android RPG遊戲,讓您能夠輕鬆找到您下一個遊戲冒險的目的地。
Thumbnail
遊戲產業似乎從很久以前,各種玩法的類型都已經確立了下來。現在新出品的遊戲,更像是已有玩法機制的排列組合、重新包裝。比起遊戲本身,遊戲公司更願意把創意放在有明確衡量標準的部分,如:劇情、音樂、特效…等。久而久之,人們對遊戲的評價越來越取決於美術、故事等決定表現力的指標...
“所有人寫的程式會變成指令 每一道指令是由CPU執行 而CPU所能理解的指令類型有限”
Thumbnail
Steam上的遊戲製作工具那麼多,到底哪個比較好用呢? 我只能說,每個人的能力和想製作的遊戲類型都不同,適合的工具當然也不會一樣,只能你自己去選擇最適合的。 雖然沒有辦法推薦最適合你的,但可以告訴你避開地雷工具的訣竅!
Thumbnail
遊戲引擎開發商 Unity 一直是我感覺很有發展潛力的企業,《原神》、《王者榮耀》等明星遊戲都是透過其引擎所建構,在手遊開發領域,擁有絕對統治力。然而,營運實績與線圖走勢卻不是如此,近 8 季毛利成長率有 4 季為負,1Q24 營運收入是近 8 季來最低值,-$375M…
Thumbnail
完成了Debug.log()的測試,接著還是要跟各位簡單講一下C#的一些規則,之後看程式會(比較)看得懂。 又講到變數? 在Unity中,變數是重要的工具,用來儲存和管理資料。讓開發者能夠靈活調整遊戲的行為和性能,減少代碼的重複性,使得遊戲開發更加高效和簡潔。透過使用變數,開發者可以輕鬆修改資料
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
在Android平台上探索角色扮演遊戲的世界,是許多遊戲愛好者的最愛。隨著手機遊戲的不斷演進,現在的RPG遊戲已經讓人目不暇給。今天我們將帶您深入了解最受歡迎的Android RPG遊戲,讓您能夠輕鬆找到您下一個遊戲冒險的目的地。
Thumbnail
遊戲產業似乎從很久以前,各種玩法的類型都已經確立了下來。現在新出品的遊戲,更像是已有玩法機制的排列組合、重新包裝。比起遊戲本身,遊戲公司更願意把創意放在有明確衡量標準的部分,如:劇情、音樂、特效…等。久而久之,人們對遊戲的評價越來越取決於美術、故事等決定表現力的指標...
“所有人寫的程式會變成指令 每一道指令是由CPU執行 而CPU所能理解的指令類型有限”
Thumbnail
Steam上的遊戲製作工具那麼多,到底哪個比較好用呢? 我只能說,每個人的能力和想製作的遊戲類型都不同,適合的工具當然也不會一樣,只能你自己去選擇最適合的。 雖然沒有辦法推薦最適合你的,但可以告訴你避開地雷工具的訣竅!
Thumbnail
遊戲引擎開發商 Unity 一直是我感覺很有發展潛力的企業,《原神》、《王者榮耀》等明星遊戲都是透過其引擎所建構,在手遊開發領域,擁有絕對統治力。然而,營運實績與線圖走勢卻不是如此,近 8 季毛利成長率有 4 季為負,1Q24 營運收入是近 8 季來最低值,-$375M…
Thumbnail
完成了Debug.log()的測試,接著還是要跟各位簡單講一下C#的一些規則,之後看程式會(比較)看得懂。 又講到變數? 在Unity中,變數是重要的工具,用來儲存和管理資料。讓開發者能夠靈活調整遊戲的行為和性能,減少代碼的重複性,使得遊戲開發更加高效和簡潔。透過使用變數,開發者可以輕鬆修改資料