目标:
- 鼠标悬停,自动提示是否有雷
- 一键自动扫雷
如何实现这两个目标:
- 需要hook掉回掉函数,响应WM_MOUSEMOVE消息(只要一响应WM_MOUSEMOVE消息,就要hook掉回掉函数)
根据老师的提示:
- 怎么判断鼠标所在位置是不是有雷?
1.将屏幕坐标转换成扫雷区域的数组坐标
2.找到雷的数量,分辨类型,以及扫雷区域的大小
- 如何实现一键扫雷
1.是否有需要对数组坐标进行屏幕坐标的转换
2.遍历扫雷的数组对不是雷的区域,发送WM_LBUTTONDOWN的消息,实现了扫雷的功能
具体流程:
1.在rand函数处下断点:
找到对应的地图数组:
alt+E:查看当前可执行模块
利用spy++寻找回掉函数:
使用CE打开进程:
重点:
如何锁定高度:
修改第一个高为11:
下面修改第二个高:
发现两个都变成了11,说明下面那个起到主导作用,是真正的高!
同样的方法可以锁定宽度和雷数: