前言
DnSpy是本人一直在用的反編譯軟件,很好用,今天閒來無事的時候用DnSpy的調試功能斷點調試了一下Unity的遊戲【發行版】,很好用,於是想着要分享給大家。
前期準備
使用方法【僅針對發行版】
本方法僅針對發行版,即已經寫好並且發佈的遊戲。
1. 查看遊戲開發的Unity版本
查看遊戲是用哪一個版本的Unity開發的可以通過AssetStudio【一款專門查看Unity遊戲的資源文件的軟件】查看,當然這是比較複雜的,不過一定是可以查詢出來的。
這裏介紹一個簡單的方法,找到你要打開的遊戲的EXE可執行文件,【右鍵屬性-詳細信息】就可以看到。
可以看到,我這邊開發使用的Unity版本就是5.2.4,記住這個版本號。
2.Mono.dll下載
Mono文件下載
下載頁面找到Unity那些文件,根據自己的版本下載對應的壓縮包。
我這邊因爲版本爲5.2.4,所以這裏下載5.x版本。
不同的Unity版本使用不同的mono.dll文件名。較舊的Unity遊戲使用.NET 2.0-3.5程序集並使用mono.dll,而較舊的Unity遊戲使用.NET 4.x程序集mono-2.0-bdwgc.dll。此文件存儲在不同的位置,具體取決於Unity版本,一般的話就是以下幾個位置:
<root> \ <GAME> _Data \ Mono \ mono.dll
<root> \ <GAME> _Data \ Mono \ EmbedRuntime \ mono.dll
<root> \ <GAME> _Data \ MonoBleedingEdge \ EmbedRuntime \ mono-2.0-bdwgc.dll
<root> \ Mono \ EmbedRuntime \ mono.dll
<root> \ MonoBleedingEdge \ EmbedRuntime \ mono-2.0-bdwgc.dll
將dnSpy的補丁mono.dll/ mono-2.0-bdwgc.dll找到對應版本後將文件複製到遊戲中,覆蓋其文件。
3. DnSpy調試
在我們想要調試的地方打上斷點【快捷鍵:F9
】
然後點擊【調試-啓動調試】
然後配置如下,基本上選定要運行的EXE文件和啓動目錄之後(默認會選定好),然後選擇自己喜歡的端口(一定要沒有被佔用),然後點擊OK就可以開始調試了。
最後
最後和大家說一點,一般用來查看局部變量或者堆棧什麼的還是很有效的【對方混淆了dll的前提下】,如果沒有混淆dll的話其實直接用dnspy大部分邏輯就可以看清楚。
最後,最好不要用在修改破解上,算了,這就當我放屁 ,不要用在非法的事情上啊!!!