使用Cheat Engine与DnSpy破解Unity游戏

news/2024/5/19 22:26:12 标签: unity, 安全, 网络安全, ctf, 逆向

在这里插入图片描述

题目连接:

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了


http://www.niftyadmin.cn/n/206390.html

相关文章

HTML+CSS+JS 学习笔记(一)———HTML(上)

🌱博客主页:大寄一场. 🌱系列专栏:前端 😘博客制作不易欢迎各位👍点赞⭐收藏➕关注 目录 代码开发工具 概念 HTML模板 body元素的常用属性 HTML 控制标记(标签)的类型 HTML语法…

0406作业

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);//获取界面尺寸QSize s this->size();qDebug()<<"w:"<<s.width()<<" h:…

Python 小型项目大全 16~20

#16 钻石 原文&#xff1a;http://inventwithpython.com/bigbookpython/project16.html 这个程序的特点是一个小算法&#xff0c;用于绘制各种尺寸的 ASCII 艺术画钻石。它包含绘制轮廓或你指定大小的填充式菱形的功能。这些功能对于初学者来说是很好的练习&#xff1b;试着理解…

解决Koa框架中请求报错Not Found/404的问题

PS&#xff1a;好吧&#xff0c;这个问题困扰了我两天&#xff0c;回过头来看还是没有理解Koa的运行机制&#xff0c;归根结底还是对于运行的异步同步没有理解&#xff0c;特此记下&#xff0c;供水友参考~ 一、问题 1.1 问题概述 前端使用axios向后台Koa提供的接口发起了请求…

设计模式-工厂方法模式

大话设计模式这本书反反复复学过好多遍了&#xff0c;每一次学都会有不同的认识&#xff0c;接下来谈谈我最近学习工厂的一次感受&#xff1b; 发展&#xff1a; 一个计算器的例子从不使用工厂到分离出前端、后端&#xff0c;到使用简单工厂再到使用工厂方法&#xff0c;每一步…

Vue2-黑马(三)

目录&#xff1a; &#xff08;1&#xff09;vue2-axios &#xff08;2&#xff09;axios-发送请求 &#xff08;3&#xff09;vue2-axios-请求体格式 &#xff08;4&#xff09;vue2-axios-默认配置 &#xff08;1&#xff09;vue2-axios 已经配置了代理&#xff0c;可以…

TCP协议、UDP协议(传输层重点协议)

目录 一、UDP 协议 1、UDP 协议段格式 2、UDP 协议 的特点 二、TCP协议&#xff08;TCP UDP 常考面试题还没整理别忘啦&#xff09; 1、TCP协议段格式 2、确认应答&#xff08;安全机制&#xff09; 3、超时重传&#xff08;安全机制&#xff09; 4、连接管理&#x…

如何在Flutter中使用flutter_markdown

很多博客&#xff0c;论坛都支持markdown语法&#xff0c;flutter也有支持markdown语法的插件flutter_markdown 安装依赖 Copydependencies:flutter:sdk: flutterflutter_markdown: ^0.3.4 保存后&#xff0c;编辑器自动下载依赖&#xff0c;或者执行 flutter pub get 创建…