ce逆向修改——扫雷(详细)
ce逆向修改——扫雷
- 实验目的
为熟悉CE的使用和对软件逆向分析有进一步的了解,以扫雷为例切入主题,学会使用CE查询地址、修改数值、判断存放内存等等,分析出地雷存放的算法,最终了解“扫雷”游戏软件的工作原理。
- 实验设备
Cheat Engine 6.8、扫雷
- 实验内容
(1)分析“初级”、“中级”和“高级”的棋盘内存地址范围;
(2)找出“雷数”、“笑脸”和“计时器”的内存地址;
(3)分析地雷存放的算法;
(4)利用思维导图分析“扫雷”游戏软件的工作原理(设计原理)。
- 实验步骤
(1)分析“初级”、“中级”和“高级”的棋盘内存地址范围;
①选择雷数右键点击浏览相关内存区域
②开始扫雷,发现点击时内存区域变红,以此判断棋盘内存地址范围
③初级棋盘内存区域:点击第一行第一列,观察红色区域,确定起始地址(01005361)。点击最后一行最后一列,观察红色区域,确定结束地址(01005469)。
④中级棋盘内存区域:点击第一行第一列,观察红色区域,确定起始地址(01005361)。点击最后一行最后一列,观察红色区域,确定结束地址(01005550)。
⑤高级棋盘内存区域:点击第一行第一列,观察红色区域,确定起始地址(01005361)。点击最后一行最后一列,观察红色区域,确定结束地址(0100555E)。
最终结果为
初级棋盘: 01005361-01005469
中级棋盘: 01005361-01005550
高级棋盘: 01005361-0100555E
(2)找出“雷数”、“笑脸”和“计时器”的内存地址;
雷数:
①地雷的数目是固定的,可以用精确扫描的方法找雷数的内存地址
②打开游戏的自定义,可以看到雷的默认数量默认为10,所以扫描精确数值10
③因为扫描到的结果过多,所以通过自定义将雷数修改为20,再次精确扫描20,最终扫描出了3个基址
④要判断哪一个基址才是雷数的内存地址,可以在CE上修改地址的数值,观察扫雷中的雷数是否会发生相应的改变
⑤最终可以判断出010056A4为雷数的内存地址
笑脸:
①笑脸只有两种状态:一个是游戏进行的时候,一个是还原游戏的时候,所以可以通过0和1进行扫描,游戏进行状态输入1进行扫描,还原游戏之后输入0进行扫描
②首先是未开始游戏状态,输入0进行扫描
③点击一个小方块,输入1进行扫描,结果46个
④点击笑脸,将游戏还原,输入0进行扫描,结果15个
⑤点击一个小方块,输入1进行扫描,结果7个
⑥点击笑脸,将游戏还原,输入0进行扫描,结果2个,可以看出笑脸的内存地址为01005164
⑦验证结果是否正确,将这个地址添加到地址栏中观察他的数值是否在游戏初始阶段为0,在游戏进行阶段为1
计时器:
①计数器的时间也是一个具体的值,所以可以通过精确数值扫描出来
②游戏开始之前计时器上的数是0,所以精确扫描0
③因为第一次扫描的结果太多,选择介于什么数值之间再次扫描
④最终确定时间的内存地址为0100579C
结果:
“雷数”的内存地址:010056A4
“笑脸”的内存地址:01005164
“计时器”的内存地址:0100579C
(3)分析地雷存放的算法;
首先要布雷函数被主函数调用的时机,根据观察可以得出一个结论:主函数在第一次点击棋盘上任意一个格子之前没有调用布雷函数,也就是说无论玩家第一次点击棋盘上任一格子都不会踩到雷,因为此时的棋盘上还不存在地雷,而在玩家点击第一个格子之后到点击第二个格子之前已经调用布雷函数,这时棋盘上的地雷才布置好。
随机埋雷,使用随机函数来实现雷区的随机化,尽量保证每个格子生成雷的概率相等;每次从当前坐标点之后的二维数组中随机选择一个坐标,并将生成的随机坐标(randx,randy)与当前选择的坐标互换,实现一次随机选择;
计算每个格子周围的雷的数量,以当前坐标点为中心,对周围八个点进行遍历,每个雷的位置L[x][y]值为1,设置一个函数用于判断当前遍历的坐标点是否在二维数组范围内,将每个点周围的雷的数量存储在一个新的二维数组numbers中;
点击格子,定义一个周边格子的的数组类将当前格子传给它。先计算左右、上下四个角,并返回一个值。定义打开格子的三种情况:一是有雷,二是空的,三将格子周边的地雷数显示到这个格子上。对当前是空白的坐标点,对其周围上下左右四个方向进行深度优先遍历,碰到数字或者雷时停止向下的遍历。
- 利用思维导图分析“扫雷”游戏软件的工作原理(设计原理)。
ce逆向修改——扫雷(详细)相关推荐
- ce逆向修改——植物大战僵尸针对“阳光值”
ce逆向修改--植物大战僵尸 一.实验目的 为熟悉CE的使用和对软件逆向分析有进一步的了解. 二.实验设备 Cheat Engine 6.8.植物大战僵尸 三.实验内容 1.针对"阳光值&q ...
- ce逆向修改——植物大战僵尸针对“金币”
针对"金币" (1)扫描金币的内存地址: (2)找到该金币的内存基址,分析其的全部属性,并画出其数据结构: (3)画出该金币的内存访问示意图或工作原理: (4)分析该金币功能实现的 ...
- 【Android 逆向】逆向修改游戏应用 ( 分析应用结构 | 定位动态库位置 | 定位动态库中的修改点 | 修改动态库 | 重打包 )
文章目录 一.应用结构分析 二.定位动态库位置 三.定位动态库中的修改点 四.修改动态库 五.重打包 一.应用结构分析 分析上一篇博客 [Android 逆向]逆向修改游戏应用 ( APK 解析工具 ...
- ps3存档是php文件,PS3存档修改图文详细全教程
作者:织田幸雅 来源:巴士论坛 PS3存档修改图文详细全教程 先下载修改存档需要用到的工具Bruteforce Save Data,将软件安装到C盘(提醒一下此软件会报毒,打开前请关闭杀毒软件 Bru ...
- 安卓逆向-修改APK-战斗直接胜利
前言 很久没有总结过关于逆向编程的文章了,来写一篇实践分享给大家.主要来说说如何通过逆向修改APK来实现游戏进入后直接获得胜利领取奖励.为了学习发展就不分享游戏名称了.下面我们开始吧: 使用到工具 A ...
- 数据结构:带头双向循环链表——增加、删除、查找、修改,详细解析
读者可以先阅读这一篇:数据结构--单链表的增加.删除.查找.修改,详细解析_昵称就是昵称吧的博客-CSDN博客,可以更好的理解带头双向循环链表. 目录 一.带头双向循环链表的处理和介绍 1.带头双向循 ...
- Linux权限修改(详细)
Linux权限修改(详细) 前言:本人最近在学Linux相关操作,虽然之前也有部署过自己的网站以及个人博客,但是对于Linux系统的基本操作终究只是知其然并不知其所以然,故特地学习. 基本权限查看 首 ...
- 关于使用CE(cheat engine)的扫雷详细逆向复现报告
分析"初级"."中级"和"高级"的棋盘内存地址范围: 分析:分析:扫雷有空白和数字,我们可以选择未知的初始值进行扫描,然后把重置后的数值与之 ...
- 【网安】工具篇:CE修改器详细使用指南(必看)
Cheat Enginee(CE)的详细使用指南 文章目录 Cheat Enginee(CE)的详细使用指南 1 下载和安装说明 1.1下载地址 1.2安装教程 1.2.1网站下载 1.2.2解压压缩 ...
最新文章
- Redis数据库搭建主从同步(主从概念、主从配置、主从数据操作)
- Java平均工资再次上涨!这份宝藏资料限量免费送!
- 杭州内推 | 阿里达摩院机器智能技术团队招聘多模态方向研究型实习生
- C++ ifstream 从文件中 字符串和数字混合输入
- 经典C语言程序100例之五二
- 修改linux文件权限命令:chmod
- mysql 多主一从备份_(5.14)mysql高可用系列——级联复制与多主一从(多源复制)...
- 【JS】执行上下文(ExcecutionContext)
- 如何在Win Server 2008R2环境下,把域帐户加到本地管理员组??
- 2020牛客国庆集训派对day4 	Arithmetic Progressions
- root - 计算机术语,root什么意思
- linux 755 777是什么权限,linux系统下644、755、777权限详解
- 获取指定进程所对应的可执行(EXE)文件全路径(代码)
- 算法 Tricks(六)—— 判断一个数是否为完全平方数
- Java swing实现一组图片自动轮播
- dell笔记本触摸板没反应怎么办,戴尔笔记本触摸面板用不了
- 私有链和联盟链的机会与挑战
- python中的pymysql_Mysql在python中的使用:pymysql
- 推荐几个出论文的好方向!
- Vue.js实战梁笔记02(第3-5章)
热门文章
- java佣兵_佣兵天下-王者归来
- Opera目录和文件详解(转自亡灵法师)
- SQL语句简单查询实例
- ACM题--C-装备合成问题
- 如何使用微图加载离线地图
- CSS 布局 - position 属性:绝对定位和相对定位
- 教妹学Java(三十二):了解 Java 中的返回类型协变
- jQuery的Ajax同步和异步
- antd of vue的excel表格导入导出
- linux系统rc.local错误,Ubuntu 16.04服务器rc-local服务启动失败,可能是因为这个符号没写...