0.准备工作
下载dnspy
https://github.com/dnSpy/dnSpy/releases
根据游戏是32位还是64位选择dnspy,不是根据自己电脑位数(其实32位还是64位都可以反编译看代码,但是位数不对,则不能进行调试)
下载完成后解压即可
1.简单使用(查看unity游戏源码)
1.1 打开dnspy
1.2 找到游戏位置
一般在游戏目录下的 游戏名_Data/Managed下
1.3 将Assembly-CSharp.dll拖入dnspy中
之后即可看到反编译的各个类
2.调试运行游戏
2.1 备份整个游戏
2.2 下载调试版本mono.dll
根据运行exe的信息判断unity版本
下载:
Unity-debugging-5.x.zip
2.3 替换mono.dll
根据unity版本不同mono.dll的位置不同,可能在以下位置
<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
根据游戏位数选择替换的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 打断点
2.7 开始调试
选择调试引擎unity和运行程序,即可调试
3.调试正在运行的程序
前面同上面的流程到2.6
3.1 运行游戏
3.2 调试
选择unity(连接)
4.注意点
如果调试不了可能是dnspy位数不对。