使用Cheat Engine与DnSpy破解Unity游戏

在这里插入图片描述

题目连接:

https://play.picoctf.org/practice/challenge/361?originalEvent=72&page=3

我们是windows系统,所以点击windows game下载游戏

在这里插入图片描述

双击运行pico.exe

在这里插入图片描述

屏幕上方的一串英文是叫我们找flag,我在这个小地图里走来走去也没flag,我上梯子后才发现突破点

在这里插入图片描述

墙外有一个旗帜,但是我们无法出去,有空气墙,我们碰到旗帜就应该能拿到flag了

目前能拿到flag的思路:

使用Cheat Engine控制人物的坐标,直接修改坐标值,强制出去
使用DnSpy修改程序代码,使一开始运行游戏的时候就显示flag

这两个方式我都会演示

Cheat Engine

Cheat Engine是一款用于修改计算机游戏运行时内存中数值的开源工具。它可以搜索和修改游戏中的各种数值,如生命值、金钱、经验值等等
下载地址:

https://www.cheatengine.org/

使用ctrl+alt+tab使游戏在后台运行,安装好Cheat Engine后双击运行

在这里插入图片描述

点击左上角的图标,导入我们的游戏进程

在这里插入图片描述

导入之后就要搜索我们要修改的值了,在unity中,玩家的坐标是浮点数,我们可以一直移动来找到坐标值

在这里插入图片描述

由于我们不知道坐标,scantype选择未知的值,valuetype选择浮点数,然后点击firstscan

在这里插入图片描述

可以看到,他扫描到了215168000个值,太多了,现在来慢慢筛选,点击scantype,选择增加值

在这里插入图片描述

然后回到游戏,我们向前走几步

在这里插入图片描述

然后回到Cheat Engine,点击nextscan

在这里插入图片描述

可以看到,值减少了很多,现在我们回到游戏,后退几步,回到Cheat Engine,选择减少值

在这里插入图片描述

点击扫描后又少了一些值,一直重复这几个动作

在这里插入图片描述

在这里插入图片描述

现在值减少到了6千多个,然后选择不变的值,点击repeat

在这里插入图片描述

点击nestscan

在这里插入图片描述

现在有400多个值,取消repeat,回到游戏,继续重复上面的动作

在这里插入图片描述

现在只剩下60多个值了,我们点击address然后右下角的图标

在这里插入图片描述

在最下面我们随便勾选几个值,代表着冻结,然后回到游戏看能不能移动,如果不能就慢慢筛选,直到找到坐标的值

经过一段时间的筛选后,发现这个值就是坐标值,一旦我冻结了他,回到游戏就无法移动

在这里插入图片描述

首先我们冻结这个值,然后双击,随便改一个值

在这里插入图片描述

注意别改太大了,大概这个值就能出去

在这里插入图片描述

现在解禁函数,我们走到旗帜前

在这里插入图片描述

出现了falg

picoCTF{WELCOME_TO_UNITY!!}

在这里插入图片描述

DnSpy

DnSpy是一款开源的.NET程序集反编译工具,它可以将.NET程序集反编译成可读性较高的C#代码或者IL代码。DnSpy不仅可以查看反编译后的代码,还可以编辑和调试.NET程序集,包括修改程序集中的变量值、方法等等

下载地址:

https://github.com/dnSpy/dnSpy/releases/tag/v6.1.8

Assembly-CSharp.dll是unity的程序集,所以我们反汇编这个文件就好了

在这里插入图片描述

双击打开DnSpy,将Assembly-CSharp.dll拖入

在这里插入图片描述

在这里插入图片描述

在APTX里找到了一些有趣的函数

在这里插入图片描述

private void OnTriggerEnter(Collider collision)
{
	if (collision.gameObject == this.player)
	{
		this.Mysterious.SetActive(true);
	}
}

如果玩家碰撞了这个对象,就会输出一些东西,这应该就是flag的触发方式了

在这里插入图片描述

在下面,可以看到游戏启动的函数名次Start

首先我们复制this.Mysterious.SetActive(true);这一行代码,然后右击APTX

在这里插入图片描述

在这里插入图片描述

然后右击我们创建的Start,选择编辑方法

在这里插入图片描述

然后进行修改,使一进入游戏就输出flag

在这里插入图片描述

在这里插入图片描述

ctrl+shift+s保存所有,双击打开游戏

在这里插入图片描述

一进去就能看见flag了

猜你喜欢

转载自blog.csdn.net/qq_45894840/article/details/130004631