findKey
嗯,就是一个窗口程序,没有输入,flag 应该就藏在程序里面
第一遍自己直接莽做,在string窗口,找到 flag{} 看到标红直接 nop 然后,然后就不知道怎么搞了
这串字符提示不能随便 nop ,重新开始
在标红开头定义函数 P ,提示 0x40191F 处解析失败。
仔细看 花指令处:
也有说 两个 push 指令是一样的,nop掉一个就行了,我感觉还是按上面的吧。
试了一下,好像都可以。
nop 完,定义函数后进入:
大佬说从后面的 else 开始看:
应该是要优先这个看创建对话框函数
然后去对话框调用的函数看看
VC实现Button响应WM_LBUTTONDOWN和WM_LBUTTONUP_vc6 buttondown buttonup-CSDN博客
WM_开头的消息都是标准消息
https://www.cnblogs.com/qinfengxiaoyue/archive/2013/02/12/2910631.html
也就是说,如果在关于对话框中按左/中/右键,input 数组就会被逐字节赋值为字符 1/2/3。
我是看不出来(0-0)
再回到最初 0x401640 函数,开始从前面看:
MD5 加密
差不多把这个程序搞明白了。
flag就藏在 unk_423030,看似没有输入实际还是有输入的,直接动调到这,没有上面正确的key
也得不到flag。
可以两次脚本异或,也可以得到 input后按要求执行程序
别人是直接在这个函数看到两次异或,然后直接解的,也行吧,但感觉不是很严谨。
[FlareOn5]Ultimate Minesweeper
You hacked your way into the Minesweeper Championship, good job. Now its time to compete. Here is the Ultimate Minesweeper binary. Beat it, win the championship, and we'll move you on to greater challenges.
Hint:本题解出相应字符串后请用flag{}包裹,形如:flag{123456@flare-on.com}
是一个扫雷游戏
.NET程序拖进 dnspy 分析
这俩肯定是关键,Ctrl+Shift+R 分析一下(分析器)
在 MainForm 中找到:
所有非雷才能赢,跟进去看看:
检查是不是所有的非雷都点了。
嗯,改成 true ,就可以看到了
Ctrl+Shift+E 尝试把这里 patch 一下,每个元素都赋值为 true
然后根据 size 来重新赋值
点击右下角编译,然后 Ctrl+Shift+S 保存 -> 确定,再运行:
点击只会刷新,重新下一个程序试试
直接点击发现没有效果:
应该是点击的回调函数里判断了方块是否可见,可见就表明已经被点开,不会进行其他操作。