V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Game Engines
Unreal Engine
MyCryENGINE
justdoit123
V2EX  ›  游戏开发

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

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

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

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

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

    22 条回复    2023-10-13 09:37:21 +08:00
    danbai
        1
    danbai  
       2023-06-10 14:47:46 +08:00
    游戏传输会使用 proto buff 。如果没加密的话你可以试试
    danbai
        2
    danbai  
       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 逆向的确很有意思,带加密的协议估计很难搞。
    daimiaopeng
        19
    daimiaopeng  
       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   ·   实用小工具   ·   1464 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 17:19 · PVG 01:19 · LAX 09:19 · JFK 12:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.