扫雷的进程名: MineSweeper.exe 64位应用程序
失败提示信息:
首先这个窗口显示时其它窗口没有反映,很明显是个模态对话框
使用x64dbg附加进程,然后下相关断点, MessageBoxW CreateWindowExW DialogBoxParamW
然后游戏中断在DialogBoxParamW,根据对话框模板资源创建一个模态的对话框
通过选择菜单的不同子菜单项,发现都是调用的同个api
回到正题
DialogBoxParamW下断点,然后游戏中随意点击,失败时中断,然后单步执行返回到调用处,
在调用处下一行下个断点.F9运行,此时不会断下.
因为它是模态对话框,需要对话框销毁后才会返回.所以点重新开始这个游戏,窗口销毁,调试器中断下来.
单步执行到返回调用处,分别在调用处以及函数头部下断点,然后运行,发现会一直中断在函数头部,
而调用处却不会中断。那说明这段代码是个分支流程结构。
结过分析发现只有当扫雷成功或者扫雷失败时,才会执行call 创建模态对话框
往上分析,发现如下代码
那只要找一个合适的地方,强制跳转到FF5FB61D,即可获胜
修改汇编代码,当第一次点击格子并且非雷时,直接弹出获胜窗口
最终效果: