某Unity3D遊戲加固產品分析

Editor發表於2018-08-30

某訊的手遊保護系統用的都是一套,在其官宣的手遊加固功能中有一項宣傳是對比較熱門的Unity3d引擎的手遊保護方案,其中對Dll檔案的保護介紹如下, “Dll加固混淆針對Unity遊戲,對Dll模組的變數名、函式名、類名進行加密混淆處理,有效提高靜態分析門檻”。


通過動態分析了它的保護方法,通過改原始碼刷機的方法繞過了它的保護方案(也可通過hook libc.so中的execve函式繞過保護),接下來就可以直接使用GameGuardain這個神奇附加上去進行各種騷操作了。這裡主要講一下如何去從記憶體中獲取Assembly-CSharp.dll 和 Assembly-CSharp-fristpass.dll檔案。


繞過保護後,先啟動GameGuardian,再啟動相關遊戲,在某訊的Logo剛好出現時附加到遊戲上,待遊戲進入到登入頁面時,通過記憶體搜尋值的方式搜尋9460301(0x4D 5A 90 00)的十進位制表示方式。這也是PE檔案Dos頭的特徵碼。搜尋步驟和結果如下:


某Unity3D遊戲加固產品分析



某Unity3D遊戲加固產品分析


記錄下第一個值和最後一個的值,接下來的dump步驟需要(dump時,開始地址儘量比第一個值小,結束地址儘量比最後一個地址大,上下浮動的大小盡量大於遊戲中最大的Dll檔案所佔記憶體大小)。


某Unity3D遊戲加固產品分析


等待儲存完畢以後就可以從手機上拉取到本地了。獲取到檔案的結果如下:


某Unity3D遊戲加固產品分析


接下來可直接使用get_dll_from_bin.exe這個工具直接從所有的bin檔案中dump出所有的dll檔案。操作後可用dnSpy直接開啟所有的dll檔案檢視是否存在Assembly-CSharp.dll和Assembly-CSharp-fristpass.dll這兩個檔案。結果下圖(本次獲取到12個dll 檔案):


某Unity3D遊戲加固產品分析


 工具獲取到dll後直接使用數字命名,直接通過dnspy開啟看看是否有最終的目標dll。

獲取到dll如下:


某Unity3D遊戲加固產品分析


並不存在所需要獲取的dll檔案。後面經過分析可知這套保護方案把Dos頭的前128位元組清空了。接下來就需要單個檔案進行操作和修復了,使用010editor開啟檔案,搜尋PE頭的檔案特徵(50 45 00 00 4c 01 03 00)。然後通過搜尋到的位置往前檢視128位元組是否被清零,如果是先把正常的pe檔案的前128個位元組複製,再往搜尋到的位置的往前128位元組進行貼上修復即可。如圖:


某Unity3D遊戲加固產品分析


某Unity3D遊戲加固產品分析


經過反覆操作和修復後,再通過get_dll_from_bin.exe操作修復的bin檔案即可。

經過操作後獲取到如下的Dll:


某Unity3D遊戲加固產品分析



通過與解包後的資原始檔大小相比較,3.dll大小和Assembly-CSharp.dll相同。

12.dll大小和Assembly-CSharp-firstpass.dll相同。


分別將3.dll 和12.dll檔案拖入dnspy中,如圖所示3.dll是目標檔案Assembly-CSharp.dll:


某Unity3D遊戲加固產品分析


12.dll是Assembly-CSharp-fristpass.dll:


某Unity3D遊戲加固產品分析


到此,所有目標檔案已經獲取完畢。






原文作者:nsec(看雪ID)

原文連結:https://bbs.pediy.com/thread-246468.htm

轉載請備註:轉自看雪論壇




看雪推薦閱讀:


1、[原創]小白文——好玩不貴的無線遙控器克隆指南


2、[翻譯]核心模式Rootkits:檔案刪除保護


3、[翻譯]國外2018最新區塊鏈教程英文版,大膽翻譯,助力論壇『區塊鏈安全』開設第四棒!


4、[原創]看雪安全峰會—《從WPA2四次握手看KRACK金鑰重灌攻擊》


5、[原創]2018看雪CTF第十五題WP


相關文章