揭秘封包辅zhu外G:利用系统发包函数,定位功能Call(一)

玩逆向,第一件事情要干什么?我想应该是确定它使用那个系统发包函数与服务器沟通。

在这里插入图片描述
为什么?不想讲太多花里胡哨的道理。举一个单机游戏和网络游戏,释放技能流程的例子。

在这里插入图片描述
单机:捕捉用户键盘消息——》技能相关的几个函数——》直接释放了某某技能
联机:捕捉用户键盘消息——》技能相关的几个函数——》告诉服务器我要释放某某技能

有没有看出什么?
在这里插入图片描述
或许不够立体,来写一些伪代码。
按键监听函数{
。。。。。
技能相关函数();
。。。。
}

技能相关函数{
。。。。。
系统发包函数(); // 告诉服务器我要释放某某技能
。。。。。
}

在网络游戏中必须要和服务端通讯,服务器才能把人物的行为动作,同步到其他玩家的客户端上。

而要与服务器通讯,必须要使用到系统的几个发包函数,分别是WSASend send sendto。(向服务端发送一个装有数据的包裹)

根据上面的一些例子我们知道,大家都感兴趣的释放技能函数内部会调用系统发包函数。

那么我们找到游戏使用的发包函数,在函数头部利用工具下一个执行断点(程序走到断点处会停下),那么是不是就可以利用堆栈中函数调用留下的信息,寻找到调用发包函数的技能函数?

PS:堆栈中有调用函数保存的返回地址

原理我们知道了,来看一个小实例。PS:实例中使用的游戏为自己搭建的私服口袋西游。

在这里插入图片描述
首先,需要找到游戏使用那个系统发包函数,非常简单——需要使用工具OD,使用OD附加上游戏。

按快捷键Ctrl+G,输入发包函数的名字 要注意大小写,

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值