开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 1931|回复: 10
收起左侧

[图文资料] 解决bp 请求定位游戏call的困难-----游戏重写发包函数

[复制链接]
发表于 2020-5-19 10:30:43 | 显示全部楼层 |阅读模式   湖南省长沙市

解决bp 请求定位游戏call的困难-----游戏重写发包函数


上回我们说到,怎么使用三大系统发包函数,无脑Ctrl+F9定位游戏的功能函数(Call),只需要我们找到游戏使用哪一个发包函数与服务端通信,就相当于得到了游戏的全套功能。



图片1.png

太容易了,肯定不会让我们这么轻易的快乐~ 所以一般都对发包函数做了一些处理。



图片2.png

比如,我们通常喜欢在发包函数头部下断,可能厂商会在头部做一些处理,加一些CRC检测啊,让我们下断就崩溃。因为F2断点实际上是修改了程序代码了——把选中的一段指令替换成 int3,所以程序执行到断点处才会断下,自然也有可能被检测到。



图片3.png

解决也简单,大不了....我们不下F2断点了呗。
右键选中代码处——》断点——》硬件执行,效果差不多但是硬件断点不修改代码。



图片4.png

但是硬件断点只能同时存在四个,使用完不要忘记及时清除。



图片5.png

图片6.png

或者让我们在头部下断 断不下来,遇见这种情况可以先试试往下面一点的代码处下断,看看它断不断。
但是如果咱们怎么折腾三个系统发包函数,就是没啥反应。那很可能是游戏重写了发包函数,不走那三个系统API了,自然我们就断不到了。

哇靠,它重写了发包函数诶。那我们怎么知道它的发包函数是啥,怎么去找到它?怎么去下断?不能再愉快的Ctrl+F9了,难受~!



图片7.png

听起来好像很牛X的样子,其实也就那样。其实发包函数里面代码写法90%都是固定的,我们自己也能玩,无非就是把send或者其他系统发包函数代码重新抄了一份,想发包的时候我不调用send了,我调用我自己的发包函数,基本上某鹅的游戏都喜欢玩这一招。



图片8.png

既然我们知道了原理,自然就有了破J之法。其实WSASend send sendTo这三大发包函数,都需要调用一个更底层的系统函数WSPSend,那么重新实现的发包函数必然也要调用WSPSend,所以我们只要定位到WSPSend,在其头部下断,使用我们的老朋友Ctrl+F9就可以返回到调用它的发包函数,管它是自己实现的 还是 调用系统的。

那么如何定位?Ctrl+G WSPSend?没用,因为这个函数本来就不是给我们调用的,我们应该调用WSASend send sendTo。



图片9.png

很简单,随便找一个能发包的程序(三大发包函数能断下的那种),去它的发包函数里面找一找就OK了,因为WSPSend在同一台电脑上的地址是相同的, 并不会因为进程的不同就变化无常。


下面我们以口袋西游为例,OD工具附加,Ctrl+G跳到send函数区域,我们可以看到里面调用了非常多的系统函数,其中一个Call 寄存器的函数就是WSPSend。系统不同可能略有不同,win7可能是 call dword ptr [eax+64]



图片10.png

在上面call指令上下断点,按F7单步步入,来到了WSPSend函数内部,同理不同系统可能略有不同。



图片11.png

然后我们把函数地址复制下来。
7269DE70    6A 3C           push 0x3C
7269DE72    68 C0196B72     push mswsock.726B19C0
7269DE77    E8 30D3FEFF     call mswsock.7268B1AC
7269DE7C    33DB            xor ebx,ebx
7269DE7E    895D D8         mov dword ptr ss:[ebp-0x28],ebx
7269DE81    8D45 C4         lea eax,dword ptr ss:[ebp-0x3C]

后面寻找游戏使用的发包函数,只需要Ctrl+G 填入WSPSend地址,跳入在其头部下断,Ctrl+F9就可以返回到游戏使用的发包函数,不管它是不是自己重新实现了发包函数。



图片12.png

这样我们又能愉快的Ctrl+F9啦,是不是很简单?你可能说这有啥?这算个啥?厂商程序员都是吃干饭的么?

所以就有了更绝的处理方式——线程发包,有可能和重新实现发包函数混合使用,老千层饼了~ o( ̄▽ ̄)ブ

线程发包处理方式,略有些复杂咱们下回见分晓~!



图片13.png
图片1.png
图片2.png
图片3.png
图片4.png
图片5.png
图片6.png
图片7.png
图片8.png
图片9.png
图片10.png
图片11.png
图片12.png
图片13.png

签到天数: 1 天

发表于 2024-4-18 22:02:16 | 显示全部楼层   浙江省宁波市
很不错的样子,支持,支持
回复 支持 反对

使用道具 举报

结帖率:32% (6/19)

签到天数: 1 天

发表于 2024-3-22 09:57:42 | 显示全部楼层   贵州省黔东南苗族侗族自治州
很不错的样子,支持,支持
回复 支持 反对

使用道具 举报

结帖率:60% (6/10)

签到天数: 1 天

发表于 2020-10-3 22:20:59 | 显示全部楼层   广西壮族自治区柳州市
大佬,能不能讲下怎么过检测啊= =OD一附加就崩溃,怎么搞
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-19 21:37:09 | 显示全部楼层   广西壮族自治区桂林市
帖中工具、游戏、完整源码geihub链接 https://github.com/Li-lab-dev/-
回复 支持 反对

使用道具 举报

发表于 2020-5-19 13:45:25 | 显示全部楼层   辽宁省丹东市
帅气 学习了 大佬 有学习的交流群么 0.0
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-19 12:37:50 | 显示全部楼层   湖南省长沙市
simor3 发表于 2020-5-19 11:16
老铁说的不错,回帖支持一下。

谢谢支持我会继续努力
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-19 12:37:23 | 显示全部楼层   湖南省长沙市
zzh233 发表于 2020-5-19 10:57
深入浅出 非常好的教程 希望可以出视频教程 超越《FZ是怎样炼成的》

哈哈哈,谬赞了。也是才学习 纪录一下自己的心得
回复 支持 反对

使用道具 举报

结帖率:100% (1/1)
发表于 2020-5-19 11:16:15 | 显示全部楼层   湖南省长沙市
老铁说的不错,回帖支持一下。
回复 支持 反对

使用道具 举报

结帖率:100% (4/4)

签到天数: 10 天

发表于 2020-5-19 11:11:50 | 显示全部楼层   浙江省金华市
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表