如何解析游戏的 UDP 数据包? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Game Engines
Unreal Engine
MyCryENGINE
justdoit123
V2EX    游戏开发

如何解析游戏的 UDP 数据包?

  •  
  •   justdoit123 2023-06-10 14:34:8 +08:00 4588 次点击
    这是一个创建于 906 天前的主题,其中的信息可能已经有所发展或是发生改变。

    想要通过网络监听游戏的数据请求,以此来获取游戏的一些状态,说白了就是写外挂。

    用 Wireshark 抓了 UDP 包,但是数据部分的协议应该不是常见的 http/https 之类的协议。

    想问下,下一步的方向是什么?一般游戏数据封包用什么协议?一般会不会有加密?

    22 条回复    2023-10-13 09:37:21 +08:00
    danbai
        1
    danbai  
    PRO
       2023-06-10 14:47:46 +08:00
    游戏传输会使用 proto buff 。如果没加密的话你可以试试
    danbai
        2
    danbai  
    PRO
       2023-06-10 14:48:24 +08:00   1
    我建议你先从内存入手,一上来就网络抓包看不出什么。
    justdoit123
        3
    justdoit123  
    OP
       2023-06-10 15:01:33 +08:00
    @danbai 好,谢谢~ 我去往这个方向试试。
    bruce0
        4
    bruce0  
       2023-06-10 15:22:54 +08:00
    现在一般会用 protobuf, 早年 还有一些使用自己开发的编码协议, 我觉得还是和 1 楼上说的 先从内存入手吧, 要不然即使抓到包了也是两眼一抹黑
    HQKM
        5
    HQKM  
       2023-06-10 16:03:58 +08:00
    protobuf 当然加密
    roycestevie6761
        6
    roycestevie6761  
       2023-06-10 17:37:54 +08:00   1
    根据我的经验,直接分析封包很难。 我研究过一段时间饥荒游戏,用的是 raknet 网络引擎,wireshark 直接自带 raknet 数据包解析。而且这个网络引擎也是开源的。即使这样,我也只能分析出最简单的喊话封包。像海钓 mod 中的钓鱼,一次发五六十个字节的数据,前 14 个是游戏引擎需要的,后面是游戏自定义的,完全不懂什么含义(之前想做自动钓鱼功能,不然一直点鼠标太累了)。而且他这些发包逻辑是用 lua 写的,我不懂 lua 就放弃了,找不到这部分逻辑在客户端的哪里。因此我无法有效构造封包,模拟不了功能。

    有兴趣可以一起交流
    roycestevie6761
        7
    roycestevie6761  
       2023-06-10 17:45:12 +08:00
    seers
        8
    seers  
       2023-06-10 17:53:21 +08:00   1
    玩玩 frida 吧,逆向是最直接的
    etmad
        9
    etmad  
       2023-06-10 19:06:47 +08:00
    @danbai 有没有相关教程,最近搞 CE,一附加游戏就关了
    lysS
        10
    lysS  
       2023-06-10 19:17:17 +08:00
    额,肯定加密了的
    justdoit123
        11
    justdoit123  
    OP
       2023-06-10 21:18:18 +08:00
    @roycestevie6761 哈哈。谢谢分享!
    justdoit123
        12
    justdoit123  
    OP
       2023-06-10 21:19:46 +08:00
    @seers oh~~~ 这玩意粗看 似乎不错。
    justdoit123
        13
    justdoit123  
    OP
       2023-06-10 21:25:22 +08:00
    主要现在实在不想学什么新框架、新架构。感觉业务开发的方向实在是很浮躁业务也好、实现业务所用的技术也好。 所以想试着了解一些计算机领域的其它应用,刚好又能驱动自己去重新学习底层技术,同时也有所应用。

    想想反正是在玩一游戏,总有一些重复操作的枯燥事情。

    之前主要是使用 ocr 来实现 游戏状态判断,但是不太稳定,而且感觉效率低。
    roycestevie6761
        14
    roycestevie6761  
       2023-06-10 21:30:28 +08:00
    @mistkafka 这些东西搞到后面很有意思,难度也越来越大,有兴趣的话搞个十年不是问题哈哈。
    roycestevie6761
        15
    roycestevie6761  
       2023-06-10 21:34:59 +08:00
    ocr 没用的,opencv 还有点 B 用,我以前用 opencv 写过游戏脚本,还不错。
    后面识图的话主流游戏也会遇到安全对抗问题,技术一遇到对抗就无止境了
    roycestevie6761
        16
    roycestevie6761  
       2023-06-10 21:36:42 +08:00
    那个脚本是我赚的第一桶金吧,虽然没多少钱,但是也是让我觉得写代码是件有乐趣的事情
    Smallgourd
        17
    Smallgourd  
       2023-06-11 01:37:09 +08:00
    主要还是涉及内存中的对抗,游戏保护涉及驱动 hook 等等一堆 Windows 底层的东西,单纯的抓包可以看看 WPE
    levelworm
        18
    levelworm  
       2023-06-11 21:53:04 +08:00 via Android
    @roycestevie6761 逆向的确很有意思,带加密的协议估计很难搞。
    labubu
        19
    labubu  
       2023-06-12 09:43:24 +08:00   1
    52 上类似的教程挺多的
    roycestevie6761
        20
    roycestevie6761  
       2023-06-12 11:42:34 +08:00
    @levelworm 是的,也有些人不搞游戏,专门搞抖音快手 telegram 这种 app 协议的,能搞出来的都是高手中的高手
    nyxsonsleep
        21
    nyxsonsleep  
       2023-08-04 21:54:01 +08:00
    大概率都是和 app 都一样的,有个加密过程,app 一般是有个签名值,游戏可能整个包都加密了,肯定是 aes ,密钥也在游戏的逻辑里。然后流程就和 app 一样反编译 hook 找密钥就行了。
    vicya
        22
    vicya  
       2023-10-13 09:37:21 +08:00
    如果不知道协议的结构 应该也没办法吧?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5160 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 01:23 PVG 09:23 LAX 17:23 JFK 20:23
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86