调试Unity游戏

dnSpy可以调试Unity调试版本和发布版本。发布版本需要修改的文件是mono-2.0-bdwgc.dll / mono.dll。也可以将发布版本转换为调试版本(还不会)。

调试发行版

先备份游戏,然后进行调试。

调试就需要对mono-2.0-bdwgc.dll / mono.dll进行打补丁,有现成的,需要调试,直接替换文件即可。

首先需要知道Unity的版本号,直接看游戏主程序的属性即可。

第3天: dnspy逆向unity游戏

版本号是2018.3.8

我们需要找到mono-2.0-bdwgc.dll / mono.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

第3天: dnspy逆向unity游戏

将dnspy的补丁mono.dll/mono-2.0-bdwgc.dll文件复制到游戏中,覆盖其文件。

可以在下方下载补丁文件。

https://github.com/0xd4d/dnSpy/releases

第3天: dnspy逆向unity游戏

现在转到debug->start debugging并选择Unity debug engine。如果游戏崩溃,您可能使用了错误的版本,或者在游戏为64位时使用了32位文件,反之亦然。

第3天: dnspy逆向unity游戏

可以看到,我们动态调试成功了。

静态分析

用一道题看看静态吧。

dnspy载入Assembly-CSharp.dll,找到输出flag的源码:

第3天: dnspy逆向unity游戏

可以看出,要得到flag,必须得到redList,blueList,Moon的坐标,Cloud的坐标,hp,score。

可以猜到,hp,score是要**的,拿坐标怎么拿呢?

可以通过修改代码,让输出的flag为我们需要的变量,像这样:

第3天: dnspy逆向unity游戏

运行游戏会得到如下输出,说明s3=17.

第3天: dnspy逆向unity游戏

继续修改变量,得到所有的未知变量。

然后写**脚本就可以了。

相关文章:

  • 2021-10-07
  • 2021-12-22
  • 2021-12-30
  • 2022-12-23
  • 2021-05-26
  • 2022-02-25
  • 2021-04-11
  • 2021-04-06
猜你喜欢
  • 2021-05-15
  • 2021-09-03
  • 2022-02-09
  • 2021-08-23
  • 2021-08-10
  • 2021-12-01
  • 2021-04-17
相关资源
相似解决方案