安全测试之探索 windows 游戏扫雷

安全,测试,探索,windows,游戏,扫雷 · 浏览次数 : 205

小编点评

## 代码解析 这段代码通过动态调试分析,逆向和C来写了一个扫雷辅助工具,提高逆向与编码技能。 **主要代码结构:** 1. **动态调试:** 使用OD工具动态调试扫雷程序,找到push(压入栈)的参数,即随机生成函数的宽和高。 2. **分析函数:** 通过观察函数返回结果、寄存器数据等,猜测随机函数的宽和高,以及雷区高度。 3. **生成坐标:** 通过宽,高的地址,打印出扫雷区域和雷数。 4. **标记雷:** 通过假设Bitblt,根据坐标生成雷区坐标公式,并减去边墙的值来计算最终坐标。 5. **代码编写:** 通过分析函数和坐标,可编写代码完成扫雷辅助工具的功能。 **一些分析问题:** 1. **为什么只记录了雷区高度?** 2. **如何处理边墙坐标?** 3. **如何判断坐标是否为雷区?** 4. **如何确定被扫描的区域大小?** 5. **如何判断扫雷是否结束?** **一些补充说明:** 1. 代码中使用了OD工具的栈回溯功能,可能存在一些错误或不准确的地方。 2. 代码中没有分享代码的部分,无法完全描述其功能。 **建议:** 1. 可以尝试修改代码,观察不同的坐标和参数,找到更精准的雷区坐标。 2. 可以尝试使用其他逆向工具,对比代码的实现逻辑。 3. 可以通过调试工具分析代码的行为,找到代码的漏洞或缺陷。

正文

作者:京东工业 宛煜昕

扫雷游戏相信很多人都从小玩过,在那个电脑游戏并不多的时代,扫雷成为玩的热度蛮高的一款游戏之一,然而就在有一次,接触到了一次不寻常的扫雷过程,使得后来我也有了这个冲动,也来做一次。通过动态调试,逆向和C来写一个扫雷辅助工具从而提高逆向与编码技能。

动态调试(分析)

首先进行扫雷程序的动态调试(分析):

打开OD(ollydebug工具),把扫雷拖放到OD中,F9运行;ctrl+G输入要跟随的表达式,输入rand,点击【确定】,跳转到该函数调用处,F2设置断点,此次是想通过API rand函数来找寻突破口。在扫雷窗口的雷区中任意点击一个位置(图片中出现2的位置),再点击还原(【笑脸】按钮-),如下图:

此时OD会在刚设置的rand处的断点断下来,如下图:

通过找到随机函数rand,下面进行栈回溯,回到上级函数中,来找到push(压入栈)的参数,也就是说随机生成函数(rand)是随机生成的高,宽,雷数。点击K(调用堆栈),弹出K调用堆栈窗口,查看堆栈窗口信息,找到返回地址,双击K调用堆栈窗口中的返回地址,返回到上一层,此过程称为栈回溯。仔细观察下图的堆栈信息010036D2(返回地址)。

单步F8,观察寄存器,数据窗口和堆栈窗口变化,dword ptr ss:[esp+0x4]或dword ptr ds:[XXX]数据窗口跟踪数值(000DFC44值是09),如下图:

返回到上层函数后,分析这里面的指令,得知刚才随机rand生成的宽(09),如下图,注意观察地址010036C7。

首先从这个函数返回的结果着手分析eax,单步后,可以看到往堆栈中(地址010036D2)压入了一个数字09,如下图:

通过以上分析,基本可以猜测得到周边的随机函数rand生成是高,雷数。可以试着改变扫雷设置(自定义雷区),如下图,来准确定位rand函数及传参,点击【确定】,再点击【还原(笑脸-)】按钮。

观察OD,如下图:

发现push 0C(000DFC84值为0C),可以确定这个rand函数push 0C就是雷区的高度。同时在内存区域也能明确看到一个大致的雷区图形,通过以上方法,大致可以猜测0x80就是雷。或者与IDA共同分析,通过静态分析,可以更直观的看到程序逻辑。得到如下数据:基地址,雷数等信息,如下图:

以上代码大概意思是先设置了全局宽0x09,高0x0C,雷数0x0A的变量,通过判断两层循环,随机生成了宽和高。得地图基地址:0x01005340。通过分析下图得知无雷是0x0F,有雷是0x8F,墙壁是0x10。

通过宽,高的地址,打印出扫雷区域和雷数,并可以更直观的区分边墙,雷。

下面开始要想如何标记雷了,通过假设WinProc(通过栈回溯到消息回调函数)中看到有关GetDC函数,大致猜测会用到Bitblt,在OD中ctrl+g输入要跟随的表达式,录入“BitBlt”,按F2设置断点,点击扫雷区域任意一个位置,OD会断在BitBlt位置。

在BitBlt中还有一个BitBlt函数,初步判断觉得是用双缓冲方式绘图,

BitBlt(hDestDC,//目的DC XDest, // 目的x坐标 YDest, // 目的y坐标 10, // 10, // 重绘区域的高和宽 hSrcDC, // 源DC 0, 0, SRCCOPY);// 指定操作方式计算雷的坐标(点击第一个扫雷的方块,查看坐标),需要注意边墙,如下图:

减去边墙的值:

-0x04=0x0C(12)-0x10(16)

0x27=0x37(55)-0x10(16)

得到坐标公式:x(XDest:12)=1_0x10(16)-0x04(4),y(YDest:55)=1_0x10(16)+0x27(39)。

代码编写

通过以上大致的分析,可进行代码的编写了,

成果

输入3landmine位置,获取出landmine(10墙壁,8Flandmine,0F无雷)

输入2自动扫雷,标记雷并开出地图

通过这个小项目,首先加强了对软件的一种逆向思维,如:看到这一种面板,大概猜到是用数组来实现的,其次雷的布局是随机生成的,然后通过动态调试可以了解实现方法(开发者的一种实现思路),可找到关键的基地址,几种状态(无雷,有雷,墙壁),最后编码阶段可以理解内存的操作,几个重要的API,FindWindow获取句柄,OpenProcess打开句柄,ReadProcessMemory读取内存信息,PostMessage异步消息模式,CloseHandle关闭句柄。其中有一些分析有误或不到位的地方还请拍砖。多逆向,分析代码有很多帮助,不仅可以拓宽自己编程与测试的思维及水平,还能发现,开发及利用程序中的漏洞或给程序打补丁等。希望小伙伴们在这条任重而道远的路上加油,互勉。

与安全测试之探索 windows 游戏扫雷相似的内容:

安全测试之探索 windows 游戏扫雷

扫雷游戏相信很多人都从小玩过,在那个电脑游戏并不多的时代,扫雷成为玩的热度蛮高的一款游戏之一,然而就在有一次,接触到了一次不寻常的扫雷过程,使得后来我也有了这个冲动,也来做一次。通过动态调试,逆向和C来写一个扫雷辅助工具从而提高逆向与编码技能。

数仓安全测试之SSRF漏洞

摘要:SSRF (Server-Side Request Forgery,服务器端请求伪造)是指由攻击者构造请求,然后利用服务器的漏洞以服务端的身份向内网发送请求对内网发起攻击。 本文分享自华为云社区《GaussDB(DWS)安全测试之SSRF漏洞》,作者: ACBD。 1. 什么是SSRF漏洞 S

DevSecOps之应用安全测试工具及选型

上篇文章,有同学私信想了解有哪些DevSecOps工具,这里整理出来,供大家参考(PS: 非专业安全人士,仅从DevOps建设角度,给出自己见解) 软件中的漏洞和弱点很常见:84%的软件漏洞都是利用应用层的漏洞。软件相关问题的普遍性是使用应用安全测试(AST)工具的主要动机。通过使用AST工具,企业

GPT-4多态大模型研究

1.概述 GPT-4是OpenAI最新的系统,能够产生更安全和更有用的回应。它是一个大型的多模态模型(接受图像和文本输入,输出文本),在各种专业和学术的基准测试中展现了人类水平的表现。例如,它在模拟的律师资格考试中得分位于前10%的考生之列;相比之下,GPT-3.5的得分位于后10%。 GPT-4是

[转帖]银河麒麟高级服务器操作系统V10SP1安装Docker管理工具(Portainer+DockerUI)

文章目录 一、系统环境配置二、安装Docker三、安装Docker管理工具Docker管理工具之PortainerPortainer简介Portainer安装Portainer访问测试 Docker管理工具之DockerUIDockerUI简介DockerUI安装DockerUI访问测试 一、系统环

[转帖]Jmeter插件之ServerAgent服务器性能监控工具的安装和使用

https://www.cnblogs.com/pachongshangdexuebi/p/13354201.html 一、前言 性能测试时我们关注的重要指标是:并发用户数,TPS,请求成功率,响应时间,服务器的CPU,memory, I/O disk等。Jmeter的聚合报告可以查看并发数、吞吐量

[转帖]KeenTune调优实践之Nginx调优

https://openanolis.cn/sig/KeenTune/doc/423701433171625827 环境准备 准备两台虚拟机,VM A安装wrk,keentuned,keentune-brain,keentune-bench,作为测试机;VM B安装Nginx,作为Nginx服务端,

安全测试常态化落地方案及日常推进机制

数据安全法实施后,国家监管部门加强了对企业数据安全的监管力度。在这个大的背景下,为保障物流体系系统安全,提前规避安全风险,由测试组牵头制定安全测试流程规范并持续推进安全测试常态化。

安全测试前置实践1-白盒&黑盒扫描

本文我们将以围绕系统安全质量提升为目标,讲述在安全前置扫描上实践开展过程。希望通过此篇文章,帮助大家更深入、透彻地了解安全测试,能快速开展安全测试。

安全测试前置实践2-安全渗透测试

本文我们将以围绕系统安全质量提升为目标,讲述在功能安全测试&安全渗透测试上实践过程。希望通过此篇文章,帮助大家更深入、透彻地了解安全测试。