首页
社区
课程
招聘
[原创]小白的第一次逆向 之 扫雷分析与辅助制作
发表于: 2017-11-25 09:38 10083

[原创]小白的第一次逆向 之 扫雷分析与辅助制作

2017-11-25 09:38
10083

需要hook掉回调函数,响应WM_MOUSEMOVE消息

怎么判断鼠标所在的位置是不是有雷?

有了思路之后,进行具体的实现

找界面的区域大小和雷的数量的数据应该是最好找的

查看是否有重定位(如果有就关掉),上CE

然后找宽度的基址
同样的经过几次尝试之后,发现

这两个地址就该就是跟宽度相关的地址

找雷数的基址
步骤一样

但是这里发现了3条数据,上面都是2条,有点不符合规律,所有就测试一下,到底这3个地址是不是全部都跟地雷数量有关(暂且按下不表,具体中od去看到底哪个才是)
根据地址的连续性,稍微整理了一下

找初始化地图数据的地址
找到了地雷和区域大小的基址,那么只要找到更改这个对区域进行更改的函数,猜想应该可以找到布雷的方法和各种雷等数据的判断类型
关键是如何找到这个函数,首先要想明白的一件事是,游戏对初始化的时候,肯定是会对数据进行调用的,那么是不是可以通过游戏初始化的时候,访问或者更改这里面的代码从而找到调用的地址,试一下把

通过故意还原游戏,从而找到了一访问某个数据的地址,或得这个地址的 数据为
01003712
这个时候,上od去看一下,是不是跟我们猜想的一样

通过od可以看到上面的代码,验证是不是真的,下个断点还原下场景,看看是不是回断下来
结果是断下来,说明这个地方很可能就是对界面进行初始化的函数,先来大致的分析一下这个函数到底做了什么

第一遍大体流程分析

接下来对几个关键函数进行分析,比如产生随机雷之前有个有很多循环的函数,估计事初始化界面数组的函数,进去分析一下

通过分析可以看出,这个函数只是对空地和边界进行填充

通过上述的分析,大体知道了初始化雷区的的公式

划重点:数组基址+0x20 +esi(高度*32),如果这个位置的opcode是0x8f,说明是雷,0xf说明是空地

然后去看一下内存图

从内存图可以看出,是每隔一行进行填充 ,因此可以总结数组的遍历公式

具体的某个x,y坐标下的值= 数组基址+ 高<<5(也就是+32,每隔一行进行填充)+x

而且通过填充的时候add eax ,2 等类似的消息可以看出,边界应该是0,内容是从1开始的,循环的时候要注意

现在去分析一下窗口回调函数(主要是找怎么把鼠标按下的点转换成数组下标的方法)

祭出 大微软的 spy ++

od直接定位到这个回调函数的位置

主要是想看看怎么把鼠标点击的屏幕坐标转换成数组下标的

定位之后发现 代码真长,可能超过300行了QAQ

只贴上回调函数的图了,其实还分析了很多的函数来掌握流程

通过

这几行的汇编代码可以看出,再LBUTTONDOWN消息中,通过lParam的高低分分别获得y,x轴坐标
然后通过公式转换为具体的数组下标,转换方式如下

地图填充的公式和屏幕坐标转换为数组下标的方式已经找到了,

总结一下找到的数据

数组基地址:0x1005340

高度基地址:0x10056A8

宽度基地址: 0x10056AC

地雷数基地址: 0x10056A4

查找具体某个数组下标中内容的公式:数组基址+ 高<<5(也就是+32,每隔一行进行填充)+宽

坐标与数组下标转换方法在上面

开写

MFC dll 静态编译

dll 注入代码就不贴了

看一下效果图 :标题栏显示坐标并提示有无雷,F5 一键扫雷


最后:迷之logo

//不知道图床正常加载了没

 
 
 
 
 
 
 
 
 
 

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 1
支持
分享
最新回复 (17)
雪    币: 50161
活跃值: (20625)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
2
重复了2帖,另一帖关闭了。
感谢分享!
2017-11-25 10:26
0
雪    币: 12857
活跃值: (9172)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
3
在win7下就分析win7的扫雷呀,反正都有符号的
2017-11-25 10:52
0
雪    币: 224
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
膜拜大神
2017-11-25 15:29
0
雪    币: 950
活跃值: (9946)
能力值: ( LV13,RANK:385 )
在线值:
发帖
回帖
粉丝
5
bitblt  看这个API,能快速定位
2017-11-25 18:02
0
雪    币: 6818
活跃值: (153)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
不错!
2017-11-25 22:10
0
雪    币: 2
活跃值: (26)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
7
侯歌威武
2017-11-26 23:30
0
雪    币: 308
活跃值: (230)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
8
扫雷真是经典话题,  不由得想起某二次元视频网站好像有一个,  通过识图然后智能点击的编程教学视频,  点击挺高,还各种记录完成时间,  很多人刷666,  我感觉还是不如咱逆向的6
2017-11-27 15:17
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
noNumber 扫雷真是经典话题,&nbsp; 不由得想起某二次元视频网站好像有一个,&nbsp; 通过识图然后智能点击的编程教学视频,&nbsp; 点击挺高,还各种记录完成时间, & ...
哈哈
2017-11-28 08:59
0
雪    币: 17
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
   
2017-11-28 09:08
0
雪    币: 866
活跃值: (4012)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
11
经典
2017-11-28 09:55
0
雪    币: 861
活跃值: (683)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
12
满开西行妖 妈耶,你是咱班的谁?私我,这特么古董货也能精!
我发这篇帖子的时候,距离老师上课去讲扫雷还有半天,对于我个人而言,并不是古董货,至于为什么能精,私聊一下段老大?
2017-11-28 18:19
0
雪    币: 49
活跃值: (118)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
猴子,加油
2017-11-30 09:08
0
雪    币: 10
活跃值: (36)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
期待你的下一篇。
2017-12-1 11:26
0
雪    币: 10
活跃值: (36)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
迷之15pb-win7
2017-12-1 11:28
0
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
好羡慕啊。  菜鸟不知道要从哪里开始入手学习  完全看不懂
2017-12-4 15:07
0
雪    币: 9
活跃值: (205)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
17
赞!!!
2017-12-16 16:29
0
雪    币: 17
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
八岛 我发这篇帖子的时候,距离老师上课去讲扫雷还有半天,对于我个人而言,并不是古董货,至于为什么能精,私聊一下段老大?
不好意思,现在才看到,那条回复确实欠考虑了,在老师讲之前就能分析的这么透彻,很厉害。那段时间看雪精了很多老技术,就吐槽吐槽,不是针对你。
2017-12-28 15:54
0
游客
登录 | 注册 方可回帖
返回
//