Unity游戲資源逆向工具


disunity是一款Java編寫(需安裝jdk1.8,即Java8)的解析Unity asset和asset bundle文件(流式加載,支持熱更新)的命令行工具(已開源)

disunity0.3.4支持untiy5及以下版本,除了解析分析文件之外,還能使用extract參數提取某些類型資源(模型、紋理)

最新disunity0.5重新梳理了命令行參數,並進行了重構,比較可惜地是,這個版本去掉了資源提取功能

java.exe  -jar "disunity.jar"  bundle-extract  "F:\\Resources\unity_builtin_extra"

 

Disunity Gui Helper是一款封裝disunity的gui工具(已開源),最新的0.21版本可與disunity0.3.4版本配合進行工作

DisunityGui.exe下載后,要放在disunity.jar所在目錄中

 

UnityAssetsExplorer可提取Unity asset和asset bundle文件中的某些類型資源(如:shader、tex等)

並且還支持將資源修改后,寫回Unity asset和asset bundle文件

該工具對tex紋理提供了自動轉換dds的功能

最新版本為v1.5,支持untiy5及以下版本

選擇對應資源項,點擊右鍵菜單“Extra This File”,就會在UnityAssetsExplorer.exe所在目錄中新建一個當前打開的Asset文件名的文件夾,並將解壓后的文件保存在其中
如:上圖所示的資源UnityWatermark-dev.tex,會在unity default resources目錄中生成出
UnityWatermark-dev.tex
UnityWatermark-dev.tex.dds
修改完dds(可使用 Paint.net來修改)后,可通過右鍵菜單“Import This File From DDS”即可。
注1:導出的dds像素格式與mipmap要與原始dds保持一致(可使用nVidia的 Windows Texture Viewer工具來查看)
注2:當dds的長寬不為2的n次冪時,會導入失敗,提示:ERROR! Wrong size dds!
這種情況只能通過修改UnityWatermark-dev.tex,並通過右鍵菜單“Import This File From original-format”來導入

 

AssetsBundleExtractor是一款分析Unity asset和asset bundle文件的工具(已開源)

並且還支持將資源修改后,寫回Unity asset和asset bundle文件

最新版本為2.2 stable d,支持untiy2019.2.0f1及以下版本

UABE開發日志記錄:https://github.com/DerPopo/UABE

版本下載:Unity Assets Bundle Extractor   github

 

Unity3d Obfuscator可以提取 unity web player.unity3d ,webplayer平台的的資源

該工具作者還開發了一些更強大的破解工具(收費),詳見:DevXDevelopment

 

AssetStudio,又叫UnityStudio,是一款C#編寫的十分強大的提取Unity asset和asset bundle文件中資源的工具(已開源)

支持Unity2.5~2019.1版本,支持的資源類型包括:Texture2D、Sprite、AudioClip、Font、Mesh、TextAsset、Shader、MovieTexture、VideoClip、MonoBehaviour、Animator

該項目一直保持着活躍,github地址為:https://github.com/Perfare/AssetStudio

AssetStudio導出貼圖格式為dds,需要轉成其他格式,可使用DDS Converter

 

ProjectExodus    github開源的Untiy轉UE4工具

https://github.com/NegInfinity/ProjectExodus

 

最后,一些圖形相關資源可以用Tegra Graphics Debugger、高通Adreno、RenderDoc等抓幀調試工具來獲取

 

從Unity asset文件中查看當前使用Unity版本

當前游戲使用是Unity2018.3.11f1版本制作的

從asset bundle文件中查看當前使用Unity版本

當前游戲使用是Unity2018.4.13f1版本制作的

asset bundle包會有一個manifest文本文件與之對應,如:suitcase_plastic_lootable.bundle.manifest

 

Unity PC端游XXX_Data目錄結構

Managed目錄:存放unity引擎、第三方和游戲邏輯托管dll    如:Assembly-CSharp.dll、Assembly-CSharp-firstpass.dll

Mono目錄:Mono虛擬機相關的文件

Plugins目錄:第三方Native dll庫

Resources\unity default resources:unity引擎自帶缺省資源

Resources\unity_builtin_extra:內置shader(如:Standard.shader)、缺省material等   里面99%是shader文件

StreamingAssets\Windows目錄:項目工程中的StreamingAssets文件夾的內容不會壓縮原封不動的拷貝到該目錄下

globalgamemanagers:所有gameobject、shader、monobehaviour腳本、mesh、material、transform、audio,texture、spirite等的總覽以及setting信息

globalgamemanagers.assets:playersetting中用到的資源

resources.assets:項目工程中的Resources文件夾的內容會打包到該文件中,但如果有資源被某場景使用,該資源則會存儲於該場景對應的sharedassets<0~n>.assets中

level0、level1、level2、level44、level165:地圖關卡文件,有幾張地圖就對應幾個level文件

sharedassets0.assets、sharedassets1.assets、sharedassets2.assets、sharedassets44.assets、sharedassets165.assets:各關卡引用的texture,material,shader,material,animator,monobehaviour腳本等外部資源

 

參考

[反編譯U3D]Decompile Unity Resources

Unity3D研究院之提取游戲資源的三個工具支持Unity5(八十四)

Unity3D asset bundle 格式簡析 

unity 打包后的文件都是什么 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM