猛牛哥
记录网络点滴生活

写辰龙抢座挂遇到的问题

这几天给客户写一个辰龙棋牌的抢座挂,客户要求抢座位时需要给桌子设置密码。本来觉得是个比较简单的时,可能改改内存就可以了。经过分析,找到了保存桌子密码的内存地址。开始查看“什么代码访问了该地址”,奇怪的发现:进入桌子时,游戏并不会读这处内存,而只有在游戏房间里设置这个密码时才会读写。本人第一次做这种东西,没有经验,所以开始胡乱想象:难道是把密码保存在硬盘文件或者注册表了?经过各种分析、查找、监控,发现密码既没有写入文件,也没有写入注册表。最后经过各种折腾,发现这个棋牌游戏的房间设置是保存在游戏服务器的(真是坑爹,既然是保存在服务器,为什么还要每次新打开游戏都要重新设置)。

最后正确的分析过程如下:

先给游戏房间设置个密码,然后搜索到存有这个密码的内存地址,然后看看是什么代码访问了此地址。阿里云9折优惠码:8JZ7BR

辰龙抢座挂

先给房间设置个密码

辰龙抢座挂

搜索存有该密码的内存地址

辰龙抢座挂

查看访问该内存地址的代码

关掉CE,打开OD,在76BBAD4A – 8A 11  – mov dl,[ecx]76BBAD50 – 88 10  – mov [eax],dl这2个地方下断。因为发现这2处代码只间隔2行,为了省事,改为只给第一行下断。

下断点

辰龙抢座:下断点

按CTRL+F9返回看看:

返回第1次

返回第1次

返回后直接是程序领空,模块名就是程序名:gameplaz,看到刚才断点处是复制字符串。后经过几次简单分析,这里不是想要找的地方。因为刚才用ce查看时,设置密码时这个断点处会执行多次,所以直接F9继续运行,又断在这个地方了,继续ctrl+f9,然后分析,最后发现这个地方应该就是把房间设置发送到游戏服务器的代码。因为下面不远处有个call是调用的networks(网络)模块。

最后的call

最后的call

在经过进一步测试、验证,这里的call是正确的。

至此,直接构造数据,然后调用游戏的网络call发送即可。

赞(1) 打赏
猛牛哥原创:猛牛哥的博客 » 写辰龙抢座挂遇到的问题

评论 1

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

    大佬请教一下,就是研究内存这方面的东西该如何学习呢,可以给点建议么。

    19y5年前 (2019-10-10)回复

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏