如何进行基于UDP的自定义游戏协议的逆向工程,而无需使用Wireshark?我可以记录一堆流量,但那又怎么样?我的目标是为Wireshark编写一个解析器插件,最终能够解码游戏命令。这看起来可行吗?我可能面临哪些挑战?命令是否可以加密?我怎样才能解决Wireshark之外的基于UDP的自定义游戏协议的逆向工程?
4
A
回答
2
8
是的,这是可行的。但它的实用程度取决于所讨论的游戏。压缩会使你的工作变得更加困难,并且加密将使它变得不可能(至少通过Wireshark - 你仍然可以获得内存中的数据)。
也许最好的方法是有条不紊地做 - 不要记录'一堆流量',而是在游戏中执行一个单独的动作或命令,并查看发送了哪些数据以进行通信。然后,您可以查看包并尝试找出任何感兴趣的东西。通常你不会从中学到很多东西,所以试试另一个命令并将新消息与第一条消息进行比较。哪些部分在同一个地方?哪部分移动了?哪些部分完全改变了?尤其要注意可能描述消息类型的数据包开始附近的固定位置的值。一般来说,数据包的开始将是类似于头部的通用内容,后面的部分数据包将成为特定于消息的部分。考虑到UDP协议通常有自己的手卷订单或可靠性方案,并且您可能会在开头附近找到序列号。
了解您的数据类型非常方便。例如,整数值可能以big-endian或little-endian格式存储。许多游戏都会将数据作为浮点值发送,因此可以查看可能描述位置或速度的连续2或3个浮点数。
相关问题
- 1. 我怎样才能解决这个自定义错误在ASP.NET
- 2. 通信协议的逆向工程
- 3. 我怎样才能重定向到基于URL中的Grails
- 4. 我怎样才能重定向基于选择一个DropDownList的
- 5. 理解/逆向工程顶层网络协议的好工具
- 6. 我怎样才能解决我的.htaccess解决
- 7. 我怎样才能加速我的基于事件的过程?
- 8. 休眠:我怎样才能解决java.lang.IncompatibleClassChangeError:
- 9. 游戏协议
- 10. 逆向工程黑盒串行协议
- 11. 我怎样才能为styleBar的UINavigationBar创建自定义样式?
- 12. 我怎样才能重定向Lighttpd的WebDAV搭载取决于用户登录
- 13. 我怎样才能解决“语义问题”
- 14. 我怎样才能创建一个自定义的Windows消息?
- 15. 我怎样才能让自定义导航栏透明的RNRF
- 16. 我怎样才能解决这个问题等于在基本类型(INT)
- 17. 我怎样才能解决这个当我尝试从功能
- 18. 我怎样才能写出纸牌游戏的功能,战争,更清洁?
- 19. 我怎样才能解决这些Qt的错误
- 20. 我怎样才能解决的意见是使用Silverlight
- 21. 我怎样才能防止我的单人Flash游戏作弊引擎?
- 22. 怎样才能实现Java字节码加密(防止逆向工程)
- 23. 除了empty()之外,我怎样才能使用PHP的isset()?
- 24. 逆向工程C#解决方案
- 25. Glyphicons如何工作?我怎样才能制作我自己的?
- 26. 我怎样才能得到基于http的heroku域
- 27. 我怎样才能获得基于值的键在下划线
- 28. iPhone游戏中心iOS4支持我的游戏?怎么样?
- 29. 我怎样才能用汇编语言对tasm程序进行蛇游戏?
- 30. 我怎样才能让我的提醒对话在Android的自定义提醒
当然,它可能... – 2009-09-15 18:37:11