dota2吧 关注:6,305,606贴子:175,672,220
  • 9回复贴,共1

个人见解,简单分析下自走棋外挂的可能性。(本人是名程序员)

只看楼主收藏回复

任何外挂都有某个切入点,如FPS压枪,只需要修改本地客户端枪支的后座力参数,就可做到无后座。
首先要有一个基本的概念,网络游戏都有一个服务器,玩家都属于客户端,玩家之间的沟通都需要服务器支持,即客户端与服务器互相发送请求和响应参数。
服务器本身是很安全的,因此外挂自然只能在修改客户端配置,或者客户端向服务器发送的请求参数上做文章。
自走棋抽卡规则
1,服务器内存放了本场游戏的卡池
2,玩家向服务器发送“抽卡请求”从卡池中抽取五张卡片,此时这五张卡片会被锁定
3,用户在服务器返回的五张卡片中选取自己想要的卡片A3(A代表卡种,3是编号)
4,客户端会向服务器发送参数为A3的“确认请求”
5,服务器收到请求后,卡池内对应的A3卡片会被清除。
6,相反,如果客户端用户删除某张卡片B2,服务器也会回收B2到卡池内。
从上面的规则可知,想要抽取任意三星卡都是很难的,因为卡池内的卡片会越来越少,抽到目标卡的概率会越来越小。
个人结论一:“抽卡请求”是很难作弊的,因为是服务器负责分配卡片给客户端。(包含各费卡的概率都不能修改)
个人结论二:如果自走棋想做外挂,切入点可以放在“确认请求”上面,即想一个方法让我们选择了目标卡A3后,卡池内A3不会被删除,这样下次抽到A卡的概率就不会变小。
那么怎么做到呢?
例如本次目标卡是D卡(当然目标卡只需要设置多个低费关键卡,如马尔斯,小鱼人,海民,伐木机),本次抽卡得到五张卡片分别为[B5,H1,H4,D2,F6],在用户选择D2卡后,
只需要将应该发送给服务器的“确认请求”参数D2,修改为其他四张卡片中的任意一张即可。因为只要服务器从卡池中删除的卡片不是D2就达到我们的期望。
这么做会造成哪些影响?
影响一:抽到三星目标卡的概率变得比正常玩家高了很多。因为开挂用户选择目标卡后,服务器卡池中目标卡不会减少。
影响二:服务器卡池中其他卡片可能会无故减少,影响其他玩家抽卡概率。
影响三:所有用户的卡加上当前卡池的卡与初始卡池的卡不一致,造成卡池紊乱,甚至游戏崩溃(是否崩溃待确认,得看源码)。
外挂是不道德的,假如上述外挂观点成立,那么如何防止这种外挂呢?
根据影响三,可以通过校验所有用户的卡加上当前卡池的卡与初始卡池是否一致来判断。
纯手打,个人见解,不喜勿喷,欢迎探讨。


IP属地:上海1楼2020-03-19 11:57回复
    我记得之前有过0元D的外挂,可能就是修改了内存里d的花费金额,然后服务器又没有做检验。
    我觉得想找到正确的切入点,还得不断尝试,说不定就发现了一个服务端没有做安全检验的地方呢?


    IP属地:上海来自Android客户端3楼2020-03-19 12:15
    收起回复
      以前不是修复过一次fg不nb的bug吗


      IP属地:上海5楼2020-03-19 12:43
      收起回复
        我记得毛子有个搞笑的外挂,把对手场下的棋子用熊德的缠绕捆住(#喝酒)


        IP属地:安徽来自手机贴吧6楼2020-03-19 12:45
        收起回复