【逆向分析】扫雷

使用OllyDbg分析扫雷程序

OllyDebug:
OllyDebug,简称OD,一种反汇编软件,动态追踪工具

程序分析

启用OllyDbg软件,打开扫雷程序
在这里插入图片描述
右键选择–“Search for–Name(label) in current module”
在这里插入图片描述搜索:BEGINPAINT
在这里插入图片描述
设置在每个参考上设置断点
在这里插入图片描述点击按钮“B”进行断点设置界面
在这里插入图片描述
双击断点会进入到反汇编窗口BeginPaint,中间CALL的内容就是我们运行的程序。
在这里插入图片描述

右键点击“跟随”或者按“Enter”键进入函数
在这里插入图片描述

扫雷界面在使用时,界面没有进行闪烁,怀疑使用双缓存技术。即在“Search for–Name(label) in current module”中找到双缓存技术的核心函数BitBlt。
在这里插入图片描述

在核心函数BitBlt上每个参考上设置断点
在这里插入图片描述
进入到第二个断点Bitblt的位置,此时显示两层循环,符合二维数组的遍历。
在这里插入图片描述
每遍历经过“CALL DWORD PTR DS:[<&GDI32.BitBlt>] ”,扫雷格子就会生成一个
在这里插入图片描述在这里插入图片描述在0x01002700位置按下F2取消断点,在函数的起始位置0x010026A7设置断点
在这里插入图片描述
代码中,通过XOR对ESI进行清零,再使用INC进行加一处理,然后会对CMP对ESI进行比较,说明ESI是循环变量。接下来“MOV AL,BYTE PTR [EBX+ESI]”表示将EBX和ESI的值相加赋值给AL。
在这里插入图片描述
查看寄存器,EBX是基址寄存器,ESI是它的偏移量
在这里插入图片描述
选择EBX基址寄存器,选择“数据窗口中跟随”
在这里插入图片描述数据窗口显示,“0F”较多,应该是空格,“8F”则是地雷,“10”则是墙(换行)。
在这里插入图片描述

去掉所有断点,运行代码,点击格子后,其中40表示空格,41代表显示1,42代表显示2,8F代表地雷
在这里插入图片描述
以上内容为第三行内容,以此类推,能够通过分析每行存“8F”的位置,判断地雷所在位置。
在这里插入图片描述

使用Cheat Engine修改游戏规则

Cheat Engine:
Cheat Engine是一款专注于游戏的修改器。它可以用来扫描游戏中的内存,并允许修改它们。它还附带了调试器、反汇编器、汇编器、变速器、作弊器生成、Direct3D操作工具、系统检查工具等

游戏修改:

自定义雷区高度为9
在这里插入图片描述

输入数字9 首次扫描
在这里插入图片描述
设置高度16
在这里插入图片描述
再次扫描,仅剩4个结果
在这里插入图片描述
设置高度20
在这里插入图片描述
搜索20,再次扫描
高度地址:
0x01005338
0x010056A8
在这里插入图片描述

修改高度
选择的地址更改数值
在这里插入图片描述地址0x01005338、0x010056A8
改成6
在这里插入图片描述

发现有了新墙
在这里插入图片描述新墙以上的可以点击,新墙以下的点击无效果,成功实现了游戏修改。
即96个格子,其中有64个雷子。
在这里插入图片描述

  • 10
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hello_Brian

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值