2020年11月1日 星期日

Android Unity - 修改遊戲程式碼

Unity是跨平台的遊戲引擎,平台支援包括Windows、Linux、MAC、IOS、Android等等,那麼此篇會介紹如何修改Android平台上的Unity遊戲,讓各位了解,在沒有任何的防護裝置(Packer、Obfuscator-LLVM等等)的情況下是非常容易竄改程式碼。

 

一、找出關鍵程式碼區塊

此款遊戲是射擊當前怪物,只要在螢幕出現的怪物都擊殺完成,就能到下一關卡,每個玩家會有3發子彈(Left),如果射完3發子彈,怪物還沒被完全消滅,遊戲就回被終止,並重新遊戲,其中Shoot是記錄目前射了幾發子彈。



了解遊戲運行方式後,我們需要找到Shoot和Left的相關程式碼,並修改它,這樣就可以無限輸出子彈,怎樣都不會終止遊戲。

接下來我們要知道Unity遊戲的主程式是放置在哪個檔案裡 ? 我們可以從assets\bin\Data\Managed資料夾裡面找到Assembly-CSharp.dll,它就是Unity遊戲主程式。



在Unity遊戲程式碼裡,我們找到射擊相關的程式碼, --this.shotTime和++this.shooted,只要將其移除就能完成我們此次的目的。



二、修改程式碼

將--this.shotTime和++this.shooted的程式碼改成NOP,修改完成後,再觀察程式碼,就看不到這二行了。



三、運行結果

修改完成Unity程式碼後,重新封裝apk檔案,並且安裝到手機裡面,這樣我們不管怎麼射擊都能讓遊戲持續運行。