2.3第三次作业

 “扫雷”游戏逆向分析

2.3.1棋盘内存地址范围

2.3.1.1 初级棋盘内存地址

1.取消“快速扫描”,扫描类型选择“未知的初始值”,点击棋盘第一个格子,随后点击“首次扫描”。

2.点击“笑脸”,刷新棋盘,再次点击棋盘第一个格子,若数值与上一次相同,则扫描类型选择“未变动的数值”,若数值与上次不同,则扫描类型选择“变动的数值”。

如上图所示数值未变动,则选择“未变动的数值”,点击“再次扫描”。第二步操作反复进行,最后看到绿色的基址。

3.将该记录添加到下方,右键选择“浏览相关内存区域”,相关内容如图所示。

点击“笑脸”,再点击棋盘第一个格子,观察下方内存数据的变化,我们可以得出第一个格子的地址为01005362。

4.同理找到棋盘的最后一个格子地址为01005468。

因此最后得出初级棋盘地址范围是01005362 ~ 01005468。

2.3.1.2  其他级别棋盘内存地址

同理找出中级棋盘和高级棋盘的地址范围为:

中级棋盘地址范围 01005362 ~ 01005551;

高级棋盘地址范围 01005362 ~ 0100555Frr。

2.3.2 游戏中各变量的内存地址

2.3.2.1 雷数的内存地址

1.找旗子的地址。(中级棋盘)查看左上角雷的个数共40个,右侧输入40,扫描类型选择“精确数值”,点击“首次扫描”,如图所示。

任一格子放置旗子,数量变为39,输入39进行“再次扫描”,得出找出了旗子的基址为01005194。

2.扫描雷的内存地址。因为旗子和雷的初始数据是一样的,所以先扫描旗子的数据,第一次扫初级棋盘的旗子数量10,转换到中级棋盘,再次输入旗子数量40,得出三个基址。

我们发现,这三个地址中,有一个和旗子地址一样,则排除该地址。剩余两个地址,我们分别修改数值为1,然后点击棋盘。修改01005330地址的数值发现棋盘没有变化,则排除,具体内容如图所

示。

修改010056A4地址的数值为1,刷新棋盘,点击某一格子,发现可通关,则该地址为雷数的内存地址。

2.3.2.2 笑脸的内存地址

1.选择扫描类型为“未知的初始值”,此时表情状态为“笑脸”,点击“首次扫描”。

2.点击棋盘,改变表情的状态,若表情变化,则扫描类型修改为“变动的数值”;若未变化,则选择“未变动的数值”。随后点击“再次扫描”,反复操作。最后得出地址为009759DB。

2.3.2.3 计时器的内存地址

1.输入游戏时间“0”,选择“精确数值”,开始游戏,游戏时间会开始变动,扫描类型则选择“变动的数值”,点击“再次扫描”,反复操作。最后得出地址0100579C。

2.3.3地雷存放的算法

输入参数:

int height, int width, int mineCount

输出参数:

void

初始化:

int size = height * width;

算法:

对每一个Element进行以下步骤:

1、生成一个随机数random

2、if (random * size <= mineCount){mineCount--;//设Element的状态为MINE}

3、size--

4、进入下一个Element

2.3.4 工作原理

1.n*n网格,一定数目的雷,如Windows7 Minesweeper游戏;

2.雷的位置随机分配到网格上;

3.网格上不是雷的位置上 显示的方块上显示周围上下左右四个角的有雷的个数;

4.雷数计数器显示余下的未发现的雷数。

CE使用指南之扫雷棋盘扫描相关推荐

  1. 学习汇编语言Day05-Cheat Enginee(CE)使用指南

    1.教程: 打开进程: 1)精确值扫描 步骤: 1.精确扫描100 2.打我 3.精确扫描新的重复值 4.重复道只有一个地址并修改值为1000 2)未知初始值 步骤: 1.未知搜索 2.打我 3.减少 ...

  2. 【开发指南】AR Foundation 扫描

    开发平台:Unity 2020 版本以上 编程平台:Visual Studio 2022 面向平台:IOS 设备   一.本文聚焦问题点 使用哪种 API 完成相机权限的获取 如何进行画面跟踪对象的捕 ...

  3. CE使用指南(入门教程)

    文章目录 下载和安装 第一关 第二关 第三关 第四关 第五关 第六关 第七关 第八关 第九关 下载和安装 解压缩文件,使用管理员权限运行 Cheat Engine.exe,点击左上角电脑图标(&quo ...

  4. OD和CE使用示例-Python实现win98扫雷一键标雷外挂

    大家好,我是小小明,前面我在<基于概率分析的智能AI扫雷程序秒破雷界世界纪录>一文中的除了用AI算法自动扫雷外,后面还演示了使用内存外挂直接知道答案进行扫雷的方法. 前面我们通过内存外挂可 ...

  5. CE扫雷20211031

    棋盘范围 根据开发的经验可以猜测存储器存储棋盘位置时应该将每个位置当做数组来存储,即(行数,列数).所以找到棋盘(1,1)和最后一个格子的存储位置就可以找到整个棋盘的范围. 寻找棋盘范围是一个很基础的 ...

  6. CE修改器学习历程之未知值扫描和修改

    1.C语言程序的准备 我们根据上篇博文的节奏,上篇博文中我们知道要扫描和修改的数字是整型4字节,而且可以在程序中随时查看该数字的值,这一次我们学习另一种情况,我们一开始不知道值是多少,但是知道它会如何 ...

  7. CE修改器入门:未知数值扫描

    经过第二关的练习,你已经理解了如何利用"精确数值"扫描查找数值了,让我们进行下一步,本关主要用来搜索进度条,人物血条等,因为这些数据通常是一个进度条,我们无法直接看到的数据,此时可 ...

  8. 零基础学CE,手把手教程!!!(软件逆向进阶篇)

    1.本次报告针对扫雷游戏,分析"初级","中级","高级"的棋盘内存地址范围 2.找出"雷数","笑脸&quo ...

  9. C语言—实现扫雷游戏(注释详解)

    文章目录 前言 一.游戏规则介绍 二.基本思路流程介绍 三.代码实现 1.用户交互菜单(Menu函数) 2. Game函数 3.放雷函数(SetMines函数) 4.扫雷展示面板(ShowBoard函 ...

最新文章

  1. mac上mysql关闭不了了_python操作mysql数据库
  2. Buuctf(PWN)ciscn_2019_c_1
  3. 权威值和枢纽值:HITS算法
  4. MGTemplateEngine 模版发动机简单使用
  5. 城乡投票源码php_响应式投票系统(支持微信、手机) php版 v3.2
  6. 2019 renew 博客目录
  7. 【DotNet 技能系列】VS工具快捷键及常用技巧
  8. mysql导入sql文件出错的一种解决方法
  9. WebShell -- 开启3389服务
  10. 计算机组成原理同步测试,计算机组成原理白中英单元练习题
  11. 《Python参考手册》7 类与面向对象编程
  12. docker基础篇——万字解读小鲸鱼
  13. 《Dreamweaver CS6 完全自学教程》笔记 第一章:网页制作基础知识
  14. 珍藏版仅30M迷你版Microsoft Office(Win10可用)
  15. 普洛斯与宁德时代签署战略合作协议;高博昌平国际研究型医院成为北京自贸区首批签约项目 | 美通企业日报...
  16. WinForm下多层架构的实现
  17. linux dot命令,linux dot 安装
  18. 【TPU和GPU,谁将一统AI芯片】摩尔定律之后一万倍,10万+热文引爆激辩
  19. 微信开放平台之小程序获取用户信息
  20. SAP MM 进销存报表与标准报表MB5B

热门文章

  1. C++ 动态创建二维数组int** B = new int* [n];
  2. 滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(9月14日~9月20日)...
  3. 计算机网络工程投标书,校园网工程投标书范例
  4. Windows Mobile系统程序与控制面板命令参数
  5. wps打包exe文件_如何使用PTEmaker将PPT打包为exe可执行文件(图文)
  6. 迅雷创始人程浩写了篇5万+的文章,告诫你创业AI前,必须注意的6大核心问题
  7. 用c语言设计交通咨询系统,交通咨询系统设计课程设计.doc
  8. 2017ACM-ICPC亚洲区域赛(青岛站)
  9. SpringCloud从入门到放弃 03 ——Consul服务注册与发现
  10. c++入门必学库函数 memset