逆向---扫雷

使用OllyDbg分析扫雷程序

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

程序分析

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

右键点击“跟随”或者按“Enter”键进入函数
逆向---扫雷_第7张图片

扫雷界面在使用时,界面没有进行闪烁,怀疑使用双缓存技术。即在“Search for–Name(label) in current module”中找到双缓存技术的核心函数BitBlt。
逆向---扫雷_第8张图片

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

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

使用Cheat Engine修改游戏规则

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

游戏修改:

自定义雷区高度为9
逆向---扫雷_第20张图片

输入数字9 首次扫描
逆向---扫雷_第21张图片
设置高度16
逆向---扫雷_第22张图片
再次扫描,仅剩4个结果
逆向---扫雷_第23张图片
设置高度20
逆向---扫雷_第24张图片
搜索20,再次扫描
高度地址:
0x01005338
0x010056A8
逆向---扫雷_第25张图片

修改高度
选择的地址更改数值
逆向---扫雷_第26张图片地址0x01005338、0x010056A8
改成6
逆向---扫雷_第27张图片

发现有了新墙
逆向---扫雷_第28张图片新墙以上的可以点击,新墙以下的点击无效果,成功实现了游戏修改。
即96个格子,其中有64个雷子。
逆向---扫雷_第29张图片

你可能感兴趣的:(逆向,汇编,安全)