[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的方法



















