关于利用“bp send”寻找CALL的困惑

很多游戏,可以利用在OD里面下封包断点(bpsend)命令找到关键CALL。首先在OD命令栏输入“bpsend”,然后进入游戏执行关键动作,游戏会在send函数处断下。这... 很多游戏,可以利用在OD里面下封包断点(bp send)命令找到关键CALL。首先在OD命令栏输入“bp send”,然后进入游戏执行关键动作,游戏会在send函数处断下。这个时候,在OD堆栈窗口把 “CALL 到 send ……”后面的“返回。。。。。。来自。。。。。”等记录下来,逐条分析,一般能找出关键CALL来。但让我困惑的是:
1、 设置bp send后,执行关键动作,在send函数处程序停了下来。这个时候,程序将要执行但尚未执行向服务器发送“打坐请求”(这里暂且就以打坐CALL为例)的封包,是不是?
2、 关键call调用应该是向服务器发出相关请求后,收到服务器发回的封包后才调用吧(如果是在发送前调用,那么还向服务器发送封包有什么意义呢?该实现的已经实现,难道就只是为了向服务器发送动作实现后改变的数据吗?)。既然封包尚未发出,那么后面的那些 “返回。。。。。。”“来自。。。。。”所记录的函数调用就应该是在调用send函数以前发生的,就不应该是打坐CALL,因为请求都没有发出去,怎么就能调用了呢?
展开
 我来答
Slayer_nux
推荐于2017-11-26 · TA获得超过793个赞
知道小有建树答主
回答量:226
采纳率:100%
帮助的人:213万
展开全部
我说两句吧雀裂。。。

其实网上的很多资料都是语焉不详的,想搞清楚这个问题重要是你对网络程序的一个理解。
对于网游来说,最主要的其实就是跟服务器的通信。以你上面的打坐的例子为引,执行打坐命令,其实就是客户端向服务器发送了一个打坐请求封包。服务器收到后,做了下判断,角色当前没有在战斗状态,可以打坐(假设战斗状态禁止打坐),然后回给客户端一个包,告诉你,你的上访请求,政府已经批准了,所以你就看见角色非常猥琐地坐在了地上,五心向天。。。。。

你上面描述的所谓bp send找call,其实就是基于这个理论前提:网络游戏的核心动作是发包,其它都是"假动作"。对很多游戏来说,如果你自己伪造一个打坐的封包发给服务器,在封包格式正确的情况下,打坐功能仿慧就会被正确触发。。。

所以你上面的2个疑惑就都可以有答案了:
1、是的,断在send处,程序还没有向服务器发送打坐请求的封包
2、所谓的"关键call",就是发包的那个动作,所以你后面的一系列猜想都是错的。你可以这样理解:你只要把包发过去就Ok了,剩下的动作,客户端自然会给你"表现"出来。

有疑惑说明你实顷大闭践的不够,自己搞的多了自然就清楚了。逆向是一个很有趣的领域,可惜大家都跑去做外挂去了。。。问题问的都这么有针对性。
追问
谢谢,我可以这样理解么:其实所谓这样找到的关键CALL,并不是角色打坐动作的代码。而是只要执行了这个call,游戏就一定会发送打坐指令的,是不是?
追答
我说的挺清楚了,私信给你吧。
ZESTRON
2024-09-04 广告
在Dr. O.K. Wack Chemie GmbH,我们高度重视ZESTRON的表界面分析技术。该技术通过深入研究材料表面与界面的性质,为提升产品质量与可靠性提供了有力支持。ZESTRON的表界面分析不仅涵盖了相变化、化学反应、吸附与解吸... 点击进入详情页
本回答由ZESTRON提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式