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,直接修改unity的C#原始碼
(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碼二進位制
(1)nop 二進位制是 0x00
(2)ldc.i4.0 二進位制是 0x16
(3)ldc.i4.1 二進位制是 0x17
(4)ret 二進位制是 0x2A
(5)ldc.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,也能直接dump出dll去反編譯分析,直接看到了原始碼。而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方法,那麼輸出來的預設的字串