當前位置:首頁 » 編程軟體 » unity反編譯cs文件

unity反編譯cs文件

發布時間: 2022-12-21 15:10:28

『壹』 如何防止Unity3D代碼被反編譯

根本的解決辦法是:先對DLL加密,然後在Unity的源碼中載入程序DLL之前進行解密。

這就需要通過逆向工程獲得相應的Unity源碼或者是直接向Unity購買Source Code License。

『貳』 如何反編譯unityengine

首先從 https://github.com/ata4/disunity/releases 下載 DisUnity v0.3.1
也可以直接用工具下載 https://github.com/ata4/disunity/releases/download/v0.3.1/disunity_v0.3.1.zip
解壓到了D:\disunity_v0.3.1 這個路徑 大家根據自己的需求來選擇自己的路徑吧

步驟二:確保安裝了 java JDK 7
下載地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
檢測是否安裝成功 在cmd輸入 java -version 可以列印出版本號 說明應該沒問題了。如果沒有成功這里就不詳細介紹了 問下度娘或者google一下(雖然最近google有些杯具了),請大家見諒。

步驟三:獲取可以破解的源文件 首先我們需要Android的 .apk 或者 IOS的 .ipa 或者網頁游戲的.unity3d 和 .boundle 文件
Android: 先看看 Android 的 apk 安裝包吧,把下好的文件後綴名.apk 直接改成 .rar 解壓到單獨的文件夾 可以反編譯的文件的路徑就在:解壓後的文件夾\assets\bin\Data
IOS: ios的 ipa的安裝包 也是同樣的原理 把.ipa 改成 .rar 然後解壓到單獨的文件夾 可以反編譯的文件的路徑就在: 解壓後的文件夾\Payload\godoflight.app\Data (這里我用的是神之光舉例子 所以是 godoflight.app)
網頁: 這個我們重點講一下

下面我講一下如何提取unity3d做的網頁游戲的資源

首先我們先要下載 火狐瀏覽器 http://www.firefox.com.cn/ 這是官方網站 請大家自行下載吧。

然後安裝 FireBug 插件 上圖了

然後搜索 Firebug 找到後點安裝

安裝成功後這里會有個蟲子的圖標

准備工作完成了,下面我們找一個unity3d開發的網頁游戲 這里我們用 《冰火破壞神》 來舉例,算是給完美做廣告了 雖然他們一定會恨我的(壞笑)。

先登錄游戲,然後打開firebug 如圖 點 [網路] -> [全部] 如果目前網頁中有unity的資源的話 就會在下面的列表裡出現

『叄』 如何防止Unity3D代碼被反編譯

加密原理(無需Unity源碼):
1. IDA Pro打開libmono.so, 修改mono_image_open_from_data_with_name為
mono_image_open_from_data_with_name_0,
2. 替換實現mono_image_open_from_data_with_name,
extern mono_image_open_from_data_with_name_0(...);
mono_image_open_from_data_with_name(...) {
MonoImage *img = mono_image_open_from_data_with_name_0(...);
//發現數據文件頭不是DLL前綴則解密 img->raw_data, 相應修改img->raw_data_len
return img;
}
3. 重新打包libmono.so; 替換Unity3D中的android下的版本.
4. 另外寫個加密的工具,植入構建環境(MonoDeveloper或VS,添加一個打包後Build Phase來加密DLL); (IOS下禁用JIT固採用AOT編譯,DLL中沒有邏輯代碼,所以無需操心);

從AndroidManifest.xml中可以看出,騰訊的改造應該是修改並替換了入口的classes.dex,把以前的入口 UnityPlayerProxyActivity替換為com.tencent.tauth.AuthActivity. 然後去載入了自定義的幾個so: libNativeRQD.so. 周全考慮,為了防止第三方委託libmono去做解密而做了防護措施. 具體實現我還沒做深入分析, 應該也是老套路.

libmono.so中的mono_image_open_from_data_with_name也被替換成了mono_image_open_from_data_with_name_0.

解密(android):
方法一: ROOT android系統(最好是一部手機,別搞模擬器,慢死), 掛載LD_PRELOAD的API hook來實現.

方法二: 內存特徵碼提取,簡單高效無敵; 機器能讀,你就能讀;

『肆』 Unity打包好的游戲可以反編譯得到源碼和資源嗎

在Unity3D中,代碼會編譯到Assembly-CSharp.dll。基於以上兩點,代碼的保護有以下兩種:
第一種是對代碼進行混淆,諸如混淆軟體CodeGuard、CryptoObfuscator、de4dot
第二種是對Assembly-CSharp.dll進行加密後,重新對mono進行編譯。
Virbox Protector直接進行加殼後,無需手動編譯mono,能防止反編譯。

『伍』 unity3d反編譯能提取場景資源嗎

下面我會從頭介紹一下提取的全過程:

步驟一:首先下載 DisUnity v0.3.1
我解壓到了D:\disunity_v0.3.1 這個路徑 大家根據自己的需求來選擇自己的路徑吧

步驟二:確保安裝了 Java JDK 7
檢測是否安裝成功 在cmd輸入 java -version 可以列印出版本號 說明應該沒問題了。如果沒有成功這里就不詳細介紹了 問下度娘或者google一下(雖然最近google有些杯具了),請大家見諒。

步驟三:獲取可以破解的源文件 首先我們需要Android的 .apk 或者 IOS的 .ipa 或者網頁游戲的.unity3d 和 .boundle 文件
Android: 先看看 Android 的 apk 安裝包吧,把下好的文件後綴名.apk 直接改成 .rar 解壓到單獨的文件夾 可以反編譯的文件的路徑就在:解壓後的文件夾\assets\bin\Data
IOS: ios的 ipa的安裝包 也是同樣的原理 把.ipa 改成 .rar 然後解壓到單獨的文件夾 可以反編譯的文件的路徑就在: 解壓後的文件夾\Payload\godoflight.app\Data (這里我用的是神之光舉例子 所以是 godoflight.app)
網頁: 這個我們重點講一下

下面我講一下如何提取unity3d做的網頁游戲的資源

首先我們先要下載 火狐瀏覽器 請大家自行下載吧。

然後安裝 FireBug 插件 上圖了

然後搜索 Firebug 找到後點安裝

安裝成功後這里會有個蟲子的圖標

准備工作完成了,下面我們找一個unity3d開發的網頁游戲 這里我們用 《冰火破壞神》 來舉例,

先登錄游戲,然後打開firebug 如圖 點 [網路] -> [全部] 如果目前網頁中有unity的資源的話 就會在下面的列表裡出現

這里我先清理了一下因為裡面有很多不是unity的資源文件 列表清空了之後 我點 【進入游戲】 就進入了一個載入界面列表裡開始載入新的資源

有.boundle 和 .unity3d 的資源 這就是我們需要的 至於其他的資源 我也是剛剛才嘗試出來的估計就這兩種有用的文件吧 如果不是還請大家補充 大家共同研究哈。

這里已經載入了不少資源了 然後就是蛋疼的下載 因為一直沒有很好的批量下載的方法 我目前還是一個一個的下載 如果大家有好的方法的話 希望可以分享一下 感激不盡。

復制鏈接 然後我用工具下載下來就可以了(我用的QQ旋風)。

到此需要做的准備基本完成下面我們開始反編譯。

步驟四: 打開cmd 進入步驟一中的 D:\disunity_v0.3.1 文件夾中

下面是disunity_v0.3.1中的目錄結構

然後我們可以用命令 disunity extract 需要反編譯的文件的路徑\*.* 就可以了
我的反編譯文件放在了E:\Downloads\szgPJB(jb51.net)\assets\bin\Data 這個文件夾中 用 *.* 就可以把裡面的文件全部反編譯 當然無法識別的文件是沒法反編出來的

從.ipa和.apk中解壓出來的資源 貌似只有 .assets 文件可以反編譯出來

從網頁上下載的.boundle和.unity3d 文件也可以放到一個文件夾 用上面的方法 反編譯出來。
當然 單個文件的話 把*.* 替換成想要反編譯的文件就可以了

『陸』 Unity打包好的游戲可以反編譯得到源碼和資源嗎

可以,80%以上的Unity游戲都根本沒做代碼混淆和資源加密,簡直都對不起反編譯三個字。直接拿來用就可以。
工具的話,看代碼用reflector。
資源就是打好包的assetbundle,直接用就好了

『柒』 如何在unity中使用protobuf工具生成cs類

首先下載protobuf的.net庫地址:http://download.csdn.net/detail/musicseli/9260723

然後把ProtoGen整個文件拷貝出來,放到我們的unity開發目錄下

把FULL文件夾下的unity .net庫拷貝到Asset文件夾下 plugin文件中(如果沒有就新建一個)

此時我的目錄結構是這樣的

在ProtoGen裡面新建個文件夾protos用於存放我們的proto文件

在跟Asset同級目錄下編寫generator.bat腳本,這樣子就可以自動幫你生成這些cs文件

[ruby] view plain
@echo off
set out_path=%cd%/Assets/Game/Script/protobuf (這一段可以自定義路徑,用於存放生成的cs文件)
cd ProtoGen
rem 查找文件
for /R "%cd%" %%i in (*.proto) do echo %%~ni
for /R "%cd%" %%i in (*.proto) do protogen -i:%%i -o:%out_path%/%%~ni.cs
pause

『捌』 如何將已經打包好的unity游戲反編譯為工程文件夾(不是提取資源,是直接反編譯成能用的工程文件夾)

首先想通過此方法完全復刻一個游戲工程,這是不可能的 不要想了

對於反編譯腳本的話
1、基於il2cpp編譯的 目前來說雖然可以 但是對於新手還是有點困難的
2、基於mono編譯的 可以把dll文件推到反編譯軟體比如ilspy即可

『玖』 在unity中怎麼運行.cs文件

一.准備工作:

調試工具
1.visual studio 工具配置:Edit - Preferences - External Tools
2.c#項目文件說明:詳細鏈接

新創建的unity項目並沒有這些文件,當在unity編輯器中,打開cs文件時或者點擊Assets-open c# project時,就會啟動visual studio工具,會自動創建 sln(solusion 解決方案) 和csproj項目文件。
其中的firstpass表示先編譯,Editor表示放在Editor文件夾下的腳本。

根據官方的解釋,它們的編譯順序如下:
(1)Assembly-CSharp-filepass.csproj:所有在Standard Assets、Pro Standard Assets或者Plugins文件夾中的腳本;
(2)Assembly-CSharp-Editor-filepass.csproj:所有在Standard Assets/Editor、Pro Standard Assets/Editor或者Plugins/Editor文件夾中的腳本產生工程文件;
(3)Assembly-CSharp.csproj:所有在Assets/Editor外面的,並且不在(1),(2)中的腳本文件(一般這些腳本就是我們自己寫的非編輯器擴展腳本)會產生工程文件;
(4)Assembly-CSharp-Editor-vs.csproj:所有在Assets/Editor中的腳本產生一個工程文件。
登錄後復制
他們是分別對應項目中4個不同代碼存放位置的C#工程,被編譯成dll後位於主目錄下的\Library\ScriptAssemblies\

Assets目錄

1、Resources
存放資源,Resources的所有內容都會打包到發布版中,資源會被壓縮,使用Resources.Load()進行載入。

2、Editor
存放編輯器的擴展腳本,可以寫一些輔助工具。Editor下的資源不會被打包到發布包中。

3、Plugins
存放插件,比如spine,tween,Plugins/Android、Plugins/iOS

『拾』 如何防止Unity3D代碼被反編譯

加密原理(無需Unity源碼):
1. IDA Pro打開libmono.so, 修改mono_image_open_from_data_with_name為
mono_image_open_from_data_with_name_0,
2. 替換實現mono_image_open_from_data_with_name,
extern mono_image_open_from_data_with_name_0(...);
mono_image_open_from_data_with_name(...) {
MonoImage *img = mono_image_open_from_data_with_name_0(...);
//發現數據文件頭不是DLL前綴則解密 img->raw_data, 相應修改img->raw_data_len
return img;
}
3. 重新打包libmono.so; 替換Unity3D中的android下的版本.
4. 另外寫個加密的工具,植入構建環境(MonoDeveloper或VS,添加一個打包後Build Phase來加密DLL); (IOS下禁用JIT固採用AOT編譯,DLL中沒有邏輯代碼,所以無需操心);
從AndroidManifest.xml中可以看出,騰訊的改造應該是修改並替換了入口的classes.dex,把以前的入口 UnityPlayerProxyActivity替換為com.tencent.tauth.AuthActivity. 然後去載入了自定義的幾個so: libNativeRQD.so. 周全考慮,為了防止第三方委託libmono去做解密而做了防護措施. 具體實現我還沒做深入分析, 應該也是老套路.
libmono.so中的mono_image_open_from_data_with_name也被替換成了mono_image_open_from_data_with_name_0.
解密(android):
方法一: ROOT android系統(最好是一部手機,別搞模擬器,慢死), 掛載LD_PRELOAD的API hook來實現.
方法二: 內存特徵碼提取,簡單高效無敵; 機器能讀,你就能讀;

熱點內容
安卓手機語音操作在哪裡開啟 發布:2025-07-15 12:18:49 瀏覽:281
安卓導航儀上網卡插哪裡 發布:2025-07-15 12:01:58 瀏覽:453
把文件編譯成數據 發布:2025-07-15 11:53:16 瀏覽:542
mt4如何修改密碼 發布:2025-07-15 11:53:16 瀏覽:215
2021思域新款買哪個配置 發布:2025-07-15 11:33:24 瀏覽:772
路由搭建http伺服器 發布:2025-07-15 11:26:45 瀏覽:724
消遣解壓 發布:2025-07-15 11:26:43 瀏覽:393
ICL編譯 發布:2025-07-15 11:26:32 瀏覽:665
快看吧交易密碼多少 發布:2025-07-15 11:26:26 瀏覽:483
星途買哪個配置啊 發布:2025-07-15 11:14:35 瀏覽:522