dnSpy调试unity游戏 反编译unity游戏

0.准备工作

下载dnspy
https://github.com/dnSpy/dnSpy/releases

根据游戏是32位还是64位选择dnspy,不是根据自己电脑位数(其实32位还是64位都可以反编译看代码,但是位数不对,则不能进行调试)
dnSpy调试unity游戏 反编译unity游戏_第1张图片
下载完成后解压即可

1.简单使用(查看unity游戏源码)

1.1 打开dnspy

1.2 找到游戏位置

一般在游戏目录下的 游戏名_Data/Managed下
dnSpy调试unity游戏 反编译unity游戏_第2张图片

1.3 将Assembly-CSharp.dll拖入dnspy中

之后即可看到反编译的各个类
dnSpy调试unity游戏 反编译unity游戏_第3张图片

2.调试运行游戏

2.1 备份整个游戏

2.2 下载调试版本mono.dll

根据运行exe的信息判断unity版本
dnSpy调试unity游戏 反编译unity游戏_第4张图片
下载:
Unity-debugging-5.x.zip

2.3 替换mono.dll

根据unity版本不同mono.dll的位置不同,可能在以下位置

\_Data\Mono\mono.dll
\_Data\Mono\EmbedRuntime\mono.dll
\_Data\MonoBleedingEdge\EmbedRuntime\mono-2.0-bdwgc.dll
\Mono\EmbedRuntime\mono.dll
\MonoBleedingEdge\EmbedRuntime\mono-2.0-bdwgc.dll

根据游戏位数选择替换的mono.dll(如果错误的话unity项目将无法运行)

2.4 添加环境变量

DNSPY_UNITY_DBG:
--debugger-agent=transport=dt_socket,server=y,address=127.0.0.1:55555,defer=y,no-hide-debugger
DNSPY_UNITY_DBG2:
--debugger-agent=transport=dt_socket,server=y,address=127.0.0.1:55555,suspend=n,no-hide-debugger

2.5 打开游戏对应位数的dnspy

2.6 打断点

dnSpy调试unity游戏 反编译unity游戏_第5张图片

2.7 开始调试

选择调试引擎unity和运行程序,即可调试
dnSpy调试unity游戏 反编译unity游戏_第6张图片

3.调试正在运行的程序

前面同上面的流程到2.6

3.1 运行游戏

3.2 调试

选择unity(连接)
dnSpy调试unity游戏 反编译unity游戏_第7张图片

4.注意点

如果调试不了可能是dnspy位数不对。

你可能感兴趣的:(游戏,unity,游戏开发)