以爱之名 发表于 2024-7-10 11:26

扫雷小逆向

本帖最后由 以爱之名 于 2024-7-10 13:04 编辑

之前c语言写过一个简易的扫雷,玩上了这个,一直玩不过关,纯算有点累,后面又想学什么扫雷公式,懒得背。就想着逆向一下吧。
图片有点不会弄,对着文本看吧,不难
游戏链接:https://www.minesweeper.cn/
图片要倒着看
1.首先找到canvas的id然后搜索
2.找到这边,paf.onmousedown
3.卡断点,找这边入手,然后就是分析,逻辑,主要代码,
卡断点发现:S98函数就是鼠标右键触发的函数

断点找到o0o函数,就是相当于点击显示该方块的函数,那我们就在显示之前判断是否是雷,是的话就直接return不进行下面的判断,后面改进了,是雷的话可以自己插旗。
然后先在o0o函数中console出d31数组,因为我发现大多数的函数都在判断/获取 d31 数组的值,然后也找到了一个start函数调用了_123函数就是布盘,确定了d31就是扫雷盘的二维数组,打印出来,每一项就是每一行,一行有几个格子每一项就有几项数据    ---   通过几次 点击之类的 打印,发现
第一个数字,0:未揭开,1:已揭开,2:标记
第二个数字:0:不是雷,1:雷
第三个数字:九宫格内雷的数量
第四个不清楚够用了不去猜

最后在o0o函数最上面添加这代码就完成了,
先判断点的是否是雷,是的话,在数组内把状态改成标记,然后再把旗子插上去 就完成了
不可能点到雷,点到了自动标记,再也不用心惊胆战辣!!!    也可以装逼用,框框点就完了,别人没算完你就框框点鼠标给雷标出来了
   
   if(d31){
         d31=2
          ctx.drawImage(gfs, h * 25, j * 25);
      return ;
    }

honghe1975 发表于 2024-7-10 15:12

果然是技术大神

以爱之名 发表于 2024-7-11 17:34

本帖最后由 以爱之名 于 2024-7-11 17:45 编辑

missbin 发表于 2024-7-11 17:31
不是随机的,你去看扫雷世界纪录的视频,全是背板扫的,基本点开就知道雷的排布,只是你不知道而已
我说我逆向的这个web游戏,是随机数,我看代码了。 说错了,看了下算法的话应该是叫洗牌算法,但其实还是生成随机数进行随机分布的,这个算法比较快随机性好,关于“基本点开就知道雷的排布”我确实不清楚了

adm471808 发表于 2024-7-10 11:30

学习,谢谢分享

yyz982698 发表于 2024-7-10 11:33


学习,谢谢分享
学习,谢谢分享

cm19890204 发表于 2024-7-10 11:49

了解 感谢分享 !

xindian720 发表于 2024-7-10 12:12

啥都能破解,羡慕程序员

sdieedu 发表于 2024-7-10 12:35

楼主发的这个分享太棒了,太实用啦{:301_995:}~!

magiclyan 发表于 2024-7-10 12:37

这样反倒没有灵魂了,更希望lz能够推导出雷的排布算法与公式的生成

woaipojiejiejie 发表于 2024-7-10 13:14

谢谢分享{:1_932:}

zhaofan66 发表于 2024-7-10 13:24

果然 人才是真的多啊{:1_899:}

以爱之名 发表于 2024-7-10 13:27

magiclyan 发表于 2024-7-10 12:37
这样反倒没有灵魂了,更希望lz能够推导出雷的排布算法与公式的生成

雷的布置是通过生成随机数进行布雷的。没算法
页: [1] 2 3 4 5
查看完整版本: 扫雷小逆向