Zom*_*ies 18 encryption encoding reverse-engineering
我计划为游戏编写一个自动机器人.
棘手的部分是弄清楚他们如何编码他们的协议......为了使机器人易于运行,只需让角色运行并记录它在wireshark中的作用.然而,解释环境更加困难......如果你闲置,它每秒收到大约5个数据包,因此有很多装饰.
我的计划:因为游戏是在TCP下运行的,所以我将使用freecap(http://www.freecap.ru/eng)强制游戏连接到我机器上运行的代理.我将需要此代理能够进行数据包注入,或者可能需要能够重新发送捕获的数据包的服务器.通过这种方式,我可以重新创建并修改服务器发送的内容,并了解其协议编码.
或者,有没有更好的方法来破译这里?可能是一种解决策略(通过挂钩winsock函数并从那里开始反汇编)?我之前没有这样做,所以我不确定.或者,还有其他想法吗?
Spa*_*arr 20
网络流量拦截和协议分析通常是在这里实现目标的不太受欢迎的方法.对于大多数现代游戏来说,加密是一个严重的因素,并且对于最常见的游戏场景中的任何微不足道的因素,协议分析都存在严重的问题.
您尝试做的大多数现代实现都依赖于读取和操作正在运行的客户端的内存空间和进程.客户端已经为您完成了所有硬件部分,包括解密流量并将其分类为更易于阅读的数据结构.为了与服务器交互,您可以调用内置于客户端的函数,而不是从头开始制作整个系列的数据包.这种方法的优点是你必须做很少的工作来解释数据和产生活动.减号是网络流量中经常有一些数据对机器人有用但被客户端丢弃,或者你可能想要将流量发送到客户端无法生成的服务器(在我自己的井中) - 这样的开发层次结构,是"欺骗"的更远的几步
*...我说这已经看到大多数MMORPG僵尸/黑客社区从ShowEQ和Odin's Eye/Excalibur等网络协议分析器发展到基于内存的应用程序,如MacroQuest和InnerSpace.在这方面,InnerSpace为您正在尝试的基于内存/流程的变体提供了一个出色的可扩展框架,如果您放弃网络分析方法,您应该将其视为项目的基础.
Vla*_*eev 13
因为我过去做了几个游戏机器人(为了好玩,当然没有利润或悲伤 - 写游戏机器人很有趣),我推荐以下内容:
在大多数情况下,最酷的方法(代码逆向工程和直接内存访问)往往效率最低.他们需要很多技能(理解代码)和时间,最初(通过所有代码和开发代码与数据结构交互)和维护(如果游戏正在更新).(当然,他们有时会允许做一些与官方客户无关的很酷的东西,但大多数时候这显然是明显的作弊,并且很可能很快吸引GM).大多数时候机器人是通过用纯色替换游戏图形/纹理,并创建简单的"像素"机器人,在屏幕上搜索某些颜色并做出相应的反应(例如点击它们).
希望这会有所帮助,并且记住 - 作弊只会让游戏不那么有趣;)
您可能可以做出一些合理的假设,这些假设应该会极大地简化您的任务。然而,为了充分利用它们,您可能需要比听起来更轻松地进行编程。
首先,可以肯定的是,他们使用的加密属于以下三类之一:
中间情况的几率非常低。
接下来,可以肯定的是,数据包在程序边缘附近被加密/解密(就在它们进入时,就在它们出去之前),并且游戏主体以解密形式处理它们。
最后,他们最有可能使用的协议包括
因此,使用设置为混杂模式的卡对未加密的 ascii 进行一些数据包嗅探。如果您看到一些,那就太好了,您就领先了。但是,如果您不放弃整个点击线路的想法,而是开始跟踪代码,因为它通过断点和使用调试器单步执行从发送数据返回。假设最外层或三层将是标准网络内容,然后是加密层,除此之外还有大量处理未加密协议的内容。
如果你很热的话,你应该能够在一个小时内完成这一步;如果你相当熟练、有动力、勤奋的话,一个周末就可以完成这一步;如果你绝望了,你就永远不可能完成这一步。但原则上可以这样做(并且在实践中无疑更容易)。
一旦你遇到了一些看起来像未加密的粘性物质的地方,被混合在一起,然后混合形式消失,然后开始担心它意味着什么。
——马库斯Q