buu刷题Reverse总结

news2024/11/14 21:41:21

[FlareOn1]Bob Doge

是一个C#编写的程序,在dnspy中打开,找到主函数,可以看到大致逻辑

 不知道dat_secret的值,动态调试看看

DnSpy动态调试:

在主函数中添加断点,调试,因为本题的fag形式为:

 Hint:本题解出相符串后请用flag{}包裹,形如:flag{123456@flare-on.com}

找到神似flag的值,尝试一下,成功

[FlareOn5]Ultimate Minesweeper

又是一道游戏类c#语言编写的题目,在dnspy中打开,可以找到源码

对源码进行分析

这一部分是创建雷区,MineField创建雷区, AllocateMemory是内存分配,这个函数及逆行方块布局及雷区分布

 这部分是对是否踩到雷区的判断,下面的if判断中有GetKey函数的调用,猜测是未踩到雷的情况,那么上面就是踩到类的情况,第二个判断若成立,则this,stopwatch.Stop(),停止进程计时,Application.DoEvents()处理应用程序消息队列中的所有待处理事件,Thread.Sleep(1000)线程暂停 1 秒 ,new SuccessPopup函数创建一个新实例,并显示为对话框函数。看到其他大佬的wp知道第一个判断踩到雷代码可以删掉,实现游戏程序踩雷也不会退出。(小小体验一把外挂的感觉)

先放一下GeyKey函数:

// Token: 0x0600000D RID: 13 RVA: 0x000025DC File Offset: 0x000007DC
		private string GetKey(List<uint> revealedCells)
		{
			revealedCells.Sort();
			Random random = new Random(Convert.ToInt32(revealedCells[0] << 20 | revealedCells[1] << 10 | revealedCells[2]));
			byte[] array = new byte[32];
			byte[] array2 = new byte[]
			{
				245,
				75,
				65,
				142,
				68,
				71,
				100,
				185,
				74,
				127,
				62,
				130,
				231,
				129,
				254,
				243,
				28,
				58,
				103,
				179,
				60,
				91,
				195,
				215,
				102,
				145,
				154,
				27,
				57,
				231,
				241,
				86
			};
			random.NextBytes(array);
			uint num = 0U;
			while ((ulong)num < (ulong)((long)array2.Length))
			{
				byte[] array3 = array2;
				uint num2 = num;
				array3[(int)num2] = (array3[(int)num2] ^ array[(int)num]);
				num += 1U;
			}
			return Encoding.ASCII.GetString(array2);

这段程序是先用Random()设置随机数,将array数组设置为随机数,将array2数组值赋给array3,再和array异或,得到新的array3,这里应该就是成功后的输出

DnSpy实现程序修改

dnSpy实现程序修改容易的多,在光标停放的函数出按Ctrl+Shit+e这样就可以进入程序修改界面,

 修改好的程序要进行编译(右下角红色圈标注的)

具体修改程序方法可以参考:

两种方式进行 C# 反编译修改源码 - lsgxeva - 博客园 (cnblogs.com)

现在是猎杀时刻(嘿嘿)

 电路很多点到有雷的地方,最后给出的结果是乱码,再尝试一次,直接点数字,得到flag

 这个题目本来是想通过动调得到array数组的值,但是动调后没有显示,尝试其他大佬的wp的方法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/739118.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

spring 自带的校验框架使用

引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId></dependency>编写规则 开启校验

springboot+mysql财务管理系统

财务管理系统的开发运用java技术、springboot框架&#xff0c;MIS的总体思想&#xff0c;以及Mysql等技术的支持下共同完成了该系统的开发&#xff0c;实现了财务管理的信息化&#xff0c;使员工体验到更优秀的财务管理&#xff0c;管理员管理操作将更加方便&#xff0c;实现目…

消息队列篇面试题

一、MQ基础 1.1、为什么使用MQ&#xff1f;MQ的优点 简答 异步处理 - 相比于传统的串行、并行方式&#xff0c;提高了系统吞吐量。 应用解耦 - 系统间通过消息通信&#xff0c;不用关心其他系统的处理。 流量削锋 - 可以通过消息队列长度控制请求量&#xff1b;可以缓解短时间…

(vue)vue项目实现语音播报

(vue)vue项目实现语音播报 解决参考1&#xff1a; 在 Vue 项目中&#xff0c;你可以使用 Web Speech API 中的 SpeechSynthesis 接口来实现文本内容的自动朗读。下面是一个示例&#xff1a; 1.在 Vue 组件的模板中添加一个按钮&#xff0c;用于触发朗读&#xff1a; <templa…

Appium+python自动化(二)- 环境搭建—下(超详解)

简介 上一篇android测试开发环境已经准备好&#xff0c; 那么接下来就是appium的环境安装和搭建了。 环境装好后&#xff0c;可以用真机连电脑&#xff0c;也可以用android-sdk里面的模拟器&#xff08;当然这个模拟器不是很好用&#xff09;&#xff0c;我一般喜欢真机&#…

【QT】——布局

目录 1.在UI窗口中布局 2.API设置布局 2.1 QLayout 2.2 QHBoxLayout 2.3 QVBoxLayout 2.4 QGirdLayout 注意 示例 Qt 窗口布局是指将多个子窗口按照某种排列方式将其全部展示到对应的父窗口中的一种处理方式。在 Qt 中常用的布局样式有三种&#xff0c;分别是&#xff1…

CRM 软件如何帮助企业改善营销活动?

一场富有成效的营销活动&#xff0c;是在正确的时间将正确的信息传递到正确的受众面前。为此&#xff0c;你必须充分了解对潜在客户和现有客户的需求&#xff0c;然后创建满足这些需求的营销活动。 CRM 软件和工具可以帮助营销团队收集和分析受众数据&#xff0c;以建立更有效的…

如何在Windows的优化驱动器工具中优化驱动器

​优化硬盘是提高电脑性能的最佳方法之一。Windows 包括一些功能,可以帮助优化电脑目前使用的不同类型的驱动器。无论你的电脑使用哪种类型的驱动器,Windows 都会自动选择适合你的驱动器的优化。 默认情况下,优化驱动器(以前称为磁盘碎片整理程序)会在自动维护中设置的时…

6.2.3 网络基本服务---文件传输协议(FTP)

6.2.3 网络基本服务—文件传输协议&#xff08;FTP&#xff09; FTP&#xff08;File Transfer Protocol&#xff09;是Internet上使用最为广泛的文件传送协议&#xff0c;FTP提供交互式的访问&#xff0c;允许客户上传文件到服务器或者从服务器下载文件&#xff0c;FTP屏蔽了…

Hive(19):DML之Insert插入数据

1 背景:RDBMS中insert使用(insert+values) 在MySQL这样的RDBMS中,通常是insert+values的方式来向表插入数据,并且速度很快。这也是RDBMS中插入数据的核心方式。 INSERT INTO table_name ( field1, field2,...fieldN ) VALUES ( value1, value2,...valueN ); 假如说对Hiv…

朝花夕拾 - 编程马拉松!Coding 40h,着手 AI 展望未来

眼看时间已过半&#xff0c;回忆唏嘘难忘怀。 Hello 大家好&#xff0c;我是爱折腾的前端工程师 jsliang~ 2023 过得很快&#xff0c;眼瞅着加加班已去大半年&#xff0c;一边恨自己没赶上今年大热门&#xff0c;一边蒙头睡觉恢复体力并感叹精神不如初。 在我以为潮流箭步离我而…

连通域与相距变换

1、连通域 //连通域 int test1() {//对图像进行距离变换Mat img imread("F:/testMap/rice.png");if (img.empty()){cout << "请确认图像文件名称是否正确" << endl;return -1;}Mat rice, riceBW;//将图像转成二值图像&#xff0c;用于统计连通…

王道考研数据结构第五章知识点

5.1.1 树的定义和基本术语 祖先节点&#xff1a;(对于你来说),父亲和爷爷都是祖先节点 子孙节点&#xff1a;对于父亲来说&#xff0c;父亲下面所有的节点都叫子孙节点 双亲节点(父节点)&#xff1a;一个节点的直接前驱就是它的父节点 兄弟节点&#xff1a;例如二叔&#xf…

MYSQL定义及操作

1、显示所有职工的基本信息 2、查询所有职工所属部门的部门号&#xff0c;不显示重复的部门号 3、求出所有职工的人数 4、列出最高工和最低工资 5、列出职工的平均工资和总工资 6、创建一个只有职工号、姓名和参加工作的新表&#xff0c;名为工作日期表 7、显示所有女职工的年龄…

jvm新生代调优

5-4 新生代调优 只有排除了自己代码的问题后&#xff0c;再进行内存调优&#xff0c;内存调优都是从新生代开始&#xff0c;因为新生代优化空间更大一些 新生代的特点 所有的new操作分配内存都是非常廉价的&#xff0c;非常快 TLAB&#xff1a;thread-local allocation buf…

go-zero微服务实战——服务构建

目录介绍 接上一节go-zero微服务实战——基本环境搭建。搭建好了微服务的基本环境&#xff0c;开始构建整个微服务体系了&#xff0c;将其他服务也搭建起来。 order的目录结构&#xff0c;如下 根目录 api服务rpc服务自定义逻辑层logic自定义参数层models自定义工具层util …

RAR Extractor Max - Unzip for Mac(简单易用的压缩软件)

RAR Extractor Max是一个软件应用程序&#xff0c;旨在从RAR档案中提取文件。RAR是一个流行的归档文件解压软件&#xff0c;广泛用于压缩和归档文件。RAR Extractor Max是专门为处理RAR文件而设计的&#xff0c;对于任何经常处理这种文件格式的人来说&#xff0c;这是一个有用的…

【运维工程师学习四】Web服务之Apache

【运维工程师学习四】Web服务之Apache 1、查询、安装apacherpm命令使用 2、验证httpd是否启动成功&#xff08;1&#xff09;、查看是否有httpd的进程&#xff08;2&#xff09;、查看是否有80端口在监听中&#xff08;3&#xff09;、CentOS7默认不带netstat命令&#xff0c;通…

自定义TagViewGroup

来看看如何实现最最基本的TagGroupView&#xff0c;该视图作为ViewGroup的作用是实现其中的子视图的自动换行&#xff0c;保证子视图能够按照在xml中传入的顺序来相对合理地显示到界面上。 注意&#xff1a;其实在Android技术已经非常完善的当下&#xff0c;其实我们已经不怎么…

【k8s】k8s的yaml文件解释,如何部署一个java.jar包

前言&#xff1a; k8s的yaml文件解释&#xff0c;如何部署一个java,jar包 YAML语法格式&#xff1a; 大小写敏感&#xff1b;使用缩进表示层级关系&#xff1b;不支持Tab键制表符缩进&#xff0c;只使用空格缩进&#xff1b;缩进的空格数目不重要&#xff0c;只要相同层级的元…