1. 程式人生 > >Unity遊戲逆向及破解方法介紹

Unity遊戲逆向及破解方法介紹

http://gslab.qq.com/article-53-1.html

背景介紹

隨著手遊的發展,Unity3D引擎逐漸成為主流的遊戲開發解決方案,傳統cocos的2D遊戲逐漸被取代,一些公司在Unity3D遊戲方面的產出也越來越多,如天天飛車,天天來戰,全民破壞神,全民偶像,全民突擊等遊戲。Unity3D遊戲的不斷產出,遊戲的安全性要求也越來越高,在此歸納一些逆向用到的方法和思路以及一些輔助性工具,做一些知識普及。

識別Unity遊戲

Android平臺的apk包可以直接解壓,看是否有./assets/bin/Data/Managed目錄,也可以檢視lib資料夾下面包含的一些so,如果有libmono,libunity等模組,基本可以確定是unity遊戲了。

Android平臺中C#編寫的主邏輯模組程式碼靜態編輯之後儲存於Assembly-CSharp.dll檔案中。因為unity的跨平臺,Android平臺是unity編譯的遊戲,那麼其對應的IOS平臺上也是unity編譯出來的。如果希望直接從IOS上面去看是否是unity遊戲,可以提取遊戲中的主模組檢視是否有unity之類的函式即可。

破解思路

下面列舉了一些破解版思路,如果能直接下斷點在函式頭修改暫存器可直接修改暫存器測試,遇到一些不能直接修改的,就用第二種方法,把修改後的Assembly-CSharp.dll注入到遊戲中,讓遊戲執行我們修改後的程式碼。另外也可以動靜態修改二進位制實現。

一、 修改unity遊戲邏輯程式碼編譯成彙編程式碼相關的值

(1)   修改傳進來的引數,即暫存器,一般是set之類的函式

(2)   彙編程式碼中儘量不修改記憶體,不修改opcode,能改暫存器直接改暫存器

二、 反編譯Assembly-CSharp.dll,直接修改unityC#原始碼

(1)       修改函式返回值

(2)       直接刪除函式體,只剩下 ret 指令

(3)       在對應函式修改,對變數進行處理

(4)       在對應函式增加一些call處理,主動call

三、 分析原始碼直接修改程式碼

(1)   通過分析unity反編譯後的原始碼找到對應的彙編指令下斷點修改暫存器

(2)   通過直接靜態分析dll,直接修改IL碼的二進位制碼

四、 在載入dll的函式位置dump原來的dll程式碼,可繞過dll加密,修改原始碼

(1)       hook住mono_image_open_from_data_full函式,dump出dll可以,用IDA配合jdb掛起程序在那函式位置下斷點dump也可以,原始碼具體修改方案同“二”和“三”

常用工具

一、 IDA工具

可以進行動態除錯和靜態分析的工具,能在合適的位置下斷點,修改指定暫存器和編寫IDC指令碼配合分析,不多介紹

二、 ILSpy

反編譯和分析dll程式碼,可以交叉引用,可以以原始碼形式儲存反編譯的程式碼,提供程式碼給DirFind等字串搜尋定位工具定位程式碼位置

三、 .NET Reflector + Reflexil

反編譯和分析dll程式碼,彌補了ILSpy一些功能性的缺陷,可以分析出錯誤的CLR檔案頭,一些在ILSpy顯示不出的dll檔案,如果只是因為dll頭部被修改,放在.NET Reflector中是可以分析出的。Reflexil則是.NET Reflector的一款外掛,可以反編譯和回編譯IL碼,方便實用視覺化。

四、 Ilasm和ildasm

Ildasm可以反編譯dll,dump出反編譯後的il碼,而Ilasm則可以重打包il碼,利用命令ilasm /dll *.il 即可。

常用IL碼二進位制

1nop 二進位制是 0x00

2ldc.i4.0 二進位制是 0x16

3ldc.i4.1 二進位制是 0x17

4ret 二進位制是 0x2A

5ldc.r4 二進位制是 0x22 ,後面跟四個位元組

案例

案例一:在函式頭下斷點(全民反恐攻擊任意傷害)

利用ILSpy反編譯的unity遊戲原始碼,在裡面找到一個影響傷害的函式,發現裡面的傳參第一個引數就是傷害值,那麼我們利用斷點工具在FPlayerPawn::TakeDamage函式頭下斷點,然後修改r1暫存器,繼續執行就可以了。

案例二:利用IDA在函式頭下斷點(悟空降魔任意修改血量值)

利用ILSpy反編譯後的unity遊戲原始碼,在裡面找到一個影響血量設定的函式set_curHP,用IDA工具調到地址下斷點,修改r1暫存器值。

案例三:Reflector+Reflexil修改原始碼返回值後注入(全民偶像任意舞蹈滿分過關)

利用Reflector反編譯unity遊戲原始碼,找到CRhythmGamingCore::GetHitResult

函式,利用Reflexil外掛編輯IL碼把返回值修改成1,相當於直接返回“amazing”。然後儲存成新的dll檔案,並利用工具將模組注入到遊戲中。

修改後,反編譯結果如下:

案例四:Reflector+Reflexil刪除函式體後注入(全民突擊不限時)

利用Reflector反編譯unity遊戲原始碼,找到TaskGameTimeReached::OnUpdate函式,利用Reflexil外掛刪除函式體,變成下面的形式,注入到遊戲中即可。

案例五:Reflector+Reflexil call函式(全民破壞神技能無CD)

利用Reflector反編譯unity遊戲原始碼, 利用Reflexil在函式加一句話主動call函式,可以清空所有技能CD。

小結

Unity引擎遊戲從目前的情況來看,相對於cocos的遊戲還是不安全的,畢竟目前很多Unity遊戲都直接暴露了dll,儘管沒有暴露dll,也能直接dumpdll去反編譯分析,直接看到了原始碼。而unity遊戲既可以從彙編層入手也可以從原始碼入手,彙編層的話直接找到函式編譯後的地址然後下斷點就可以了;如果是修改原始碼的話則需要把回編譯的dll注入到mono載入dll的那個地方。


相關推薦

Unity遊戲逆向破解方法介紹

http://gslab.qq.com/article-53-1.html背景介紹隨著手遊的發展,Unity3D引擎逐漸成為主流的遊戲開發解決方案,傳統cocos的2D遊戲逐漸被取代,一些公司在Unity3D遊戲方面的產出也越來越多,如天天飛車,天天來戰,全民破壞神,全民偶像

Lua遊戲逆向破解方法介紹

初始 成對 參數 很多 技術 邏輯 重寫 源碼 sem Lua遊戲逆向及破解方法介紹 背景介紹 隨著手遊的發展,越來越多的Cocos-lua端遊開發者轉移到手遊平臺。Lua腳本編寫邏輯的手遊也是越來越多,如夢幻西遊、刀塔傳奇、開心消消樂、遊龍英雄、奇跡暖暖、疾風獵

Xmind 8 pro 軟體介紹破解方法

文章來自:原始碼線上https://www.shengli.me/office/498.html      Xmind是一款非常專業的思維導圖軟體,介面友好、功能優秀、可用性極強,從而數百萬人選擇了它。      XMind不僅可以

ReSharper Ultimate 2017 下載地址破解方法

.com tps lin com 選擇 輸入 窗口 ide ins https://download.jetbrains.8686c.com/resharper/JetBrains.ReSharperUltimate.2017.1.2.exe 安裝完成後,打開vs 彈出

textView 右上角紅點setBounds方法介紹

Drawable的setBounds方法有四個引數,setBounds(int left, int top, int right, int bottom),這個四引數指的是drawable將在被繪製在canvas的哪個矩形區域內。 例如 @Override protected v

phtoshop cs6 下載安裝破解方法(另附Photoshop CC 2018破解版圖文教程)

    前言:     前端雖然用PS不多,但有時需要用PS切圖;UI給你PSD圖,需要取色,檢視字型顏色大小;測量元素寬高等     但有時想找一個“麻雀雖小,五臟俱全”又是破解版的PS,也不是那麼容易的     注:ps完整版不僅體積大,啟用時也會佔用更多記憶體,而且很多功能前端是不需要

unity遊戲開發之ULua框架介紹(二)

1.SimpleFramework框架配置檔案 (1)AppConst 檔案    在AppConst.cs檔案中配置了很多專案開發過程中,需要使用到的“公共常量資訊”。指令碼內的常量都有中文備註。所在位置是:Scripts/ConstDefine/AppConst.cs

unity遊戲開發之ULua框架介紹(一)

1.基礎介紹 ①ULua 整合開發環境叫做:SimpleFramework,SimpleFramework 分為NGUI 和UGUI兩個版本,區別是NGUI 版本的框架資源中含有NGUI 這個外掛。SimpleFramework 本身不是Unitypackage 格式,而是一個Unity3D的專

solidworks2016安裝教程破解方法

最好是重啟之後安裝,什麼應用都別開啟,不然可能會有干擾,我第一次安裝沒成功~第二次成功的 轉載http://www.cadzxw.com/5075.html solidwork2016中文破解版下載:點選下載 首先下載本站提供的solidworks2016軟體。安裝與破解方法親測有效。

Rational Rose 2003 下載破解方法

                這麼好的東西,不拿來出分享,我對不起原作者呀。但是我這裡不知道作者是誰,感謝在先了。原來的地址不可以下載了,現在修改為FLASHGET下載地址:Flashget://W0ZMQVNIR0VUXWZsYXNoZ2V0eDovL3xtaHRzfGNtRjBhVzl1WVd3Z2Nt

eclipse安裝jrebel控制元件破解方法,maven專案的熱部署

     jrebel是一款十分方便的外掛,對於開發而言,能夠節省大批的時間,不必每次都等待伺服器(如tomcat)的啟動,當即修改當即生效。 1、安裝時,我比較推薦使用eclipse marketpl

IDEA中安裝MyBatis Plugins(Mybatis-Generator)外掛破解方法

IDEA中安裝MyBatis Plugins(Mybatis-Generator)外掛及破解方法 1.首先在File——Settings——輸入Plugins,選擇Browse repositories,搜尋mybatis,選擇mybatis-plugins,點選安裝(由於我的已經安裝過,所以沒

IntelliJ IDEA 2017 完美註冊方法破解方法

宣告:本文純屬個人隨手筆記,如果對您有參考價值我十分開心,如果有存在錯誤,或者有更好的解決辦法也麻煩您留言告訴我,大家共同成長,切勿惡言相。 歡迎加入資源共享QQ群:275343679,一起發現知識、瞭解知識、學習知識、分享知識。 個人網站:www.itlantian.

詳解MYSQL資料庫密碼的加密方式破解方法(2)

2.將MySQL使用者密碼字串加入到Cain破解列表     本文使用Cain & Abel 來破解MYSQL資料庫使用者密碼,Cain & Abel是一個可以破解屏保、PWL密碼、共享密碼、快取口令、遠端共享口令、SMB口令、支援VNC口令解碼、C

ntellij IDEA中使用MyBatis plugin外掛安裝教程破解方法

安裝教程以及破解過程的詳解:前言:由於第一次使用MyBatis_plugin外掛,所以第一步肯定是官網瞭解一下是否可以直接使用,根據官網資訊是需要購買然後才能正常使用,看了一下價格69.99刀,如果你們需要購買,官網連結:點選開啟連結 。然後你們懂滴,繞道而行,去百度和goo

Intellij IDEA中使用MyBatis plugin外掛安裝教程破解方法

安裝教程以及破解過程的詳解: 前言: 由於第一次使用MyBatis_plugin外掛,所以第一步肯定是官網瞭解一下是否可以直接使用,根據官網資訊是需要購買然後才能正常使用,看了一下價格69.99刀,

北京聯通光貓華為HG8346R/HG8321R破解方法介紹

http://www.chinadsl.net/forum.php?mod=viewthread&tid=123349&extra=&page=12 s7 S! U. I$ ]7 ^7 \: J北京聯通的華為HG8346R是我接觸的第一個光貓,因為2

PyCharm2018 安裝破解方法

目錄 1>. 安裝 2>. 破解 PyCharm就是Python語言開發中一個很受歡迎的IDE,介面類似於visual studio,android studio,整合的功能也很多。 1>. 安裝 首先要下載Pycharm這個軟體,可以在官網下載進

[轉]AI roboform 7.2.5專業版破解補丁破解方法

RoboForm是一款密碼管理, 表格填寫, 密碼生成, 填寫和儲存表格的軟體,目前有超過800萬人在使用。使用RoboForm可以讓我們在做seo外鏈發帖方面帶來很大的方便。但是從RoboForm官方下載的版本雖然可以免費使用,但是隻有30天時間。現在我教大家如何破解最新版本AI roboform 7

Object類toString方法介紹

public class TestToString {       public static void main(String[] args) {          Dog d = new Dog();         /**           * 如果沒有重寫toString方法,那麼輸出來的預設的字串