关于利用JAVA开发游戏外挂的几点思考

能够利用JAVA来编游戏外挂,这真的是一个让人很感兴趣的话题。

在讨论这个题目之前,我们首先来给不玩网络游戏的人补一下课,首先网络游戏的概念大家应该都是知道了,从虾米最早接触的文字MUD《重出江湖》,一直到现在大红大紫的魔兽世界等游戏,都是网游。如果更精确的说,虾米认为应该是那些通过广域网来进行的游戏,没人会把局域网里的纸牌叫做是网游吧?那么所谓的外挂就是针对网络游戏开发的一款软件,功能是截获从客户端发往服务器的数据,模拟玩家的操作,以达到更快升级、更块赚钱的目的。外挂从游戏类型来说,可以分为两种,一种是用于本地数据修改的。相信地球上的程序员都玩过《暗黑破坏神》也都用过修改器。其实修改器就可以叫做外挂。因为它修改了本地的数据;另一种是用于网络数据修改的,最常见的手段就是截获、修改数据包以欺骗服务器。例如,一个1级的菜鸟本来伤害只有10点,但是可以修改发往服务器的数据包,把伤害修改为任意值,玩拳皇的人也许碰到过这种情况,被对方一个轻拳就打废了,很有可能就是这个原因。(所举的例子理论上可行,大多数情况你的外挂还没开发完成就会被官方封号了)。

简单的知识我们先讲到这里,在讨论用java编外挂之前,还有一个话题要讨论,那就是外挂的工作原理或方式。上面的讲的那个例子其实已经把外挂的工作原理和盘托出:1、模拟玩家操作;2、分析并获取本地内存中游戏的数据;3、将修改的数据发往服务器(针对网络游戏而言)。但是现在各个运营商防外挂的水平都很高,如果是修改过的数据包那么服务器会不接受,甚至会被判定为使用非法外挂而封号的。在这里举一个场景例子:你在打怪的时候,你的血会不断的减少,怪物被杀死后还会掉落物品,那么外挂就应该获取到你的血值和是否有物品掉落以及掉落的坐标,然后触发相应的鼠标时间去喝药或捡东西。注意,在这里我们没有讨论利用按键精灵去实现外挂。因为我一直认为单纯依靠界面坐标去定位操作的程序不能称之为外挂

现在我们来讨论一下用JAVA开发外挂。开发过外挂的人都知道,开发外挂所使用的一般都是VC,VB,语言方面大多是c++,vb,dephl,这是因为中国的网络游戏99.9%都是运行在windows环境下的,因此就要调用windows的api,在这方面,上述开发语言有着得天独厚的优势。另一方面,用vc,vb开发的外挂,可以直接在windows宿主下运行,但是java却不行,JAVA是需要JRE才能运行的。我相信没人原因为了使用一款几十KB的外挂去装一个几十M的JAVA运行环境吧。但是从技术上,我认为JAVA是完全可以用于开发外挂的。

首先,JAVA完全具备分析内存的功能,不过我还不知道怎么做(汗一下)。JAVA程序运行的效率和性能可能是低于C++,但是目前的主流配置跑游戏的时候再跑个JAVA虚拟机是不成问题的。甚至利用JAVA读取内存的数据,还可以发挥JAVA本身的优势。其次,JAVA的网络编程功能强大,获取数据封包不是什么难题,但是要解析封包那就不一样了,这属于另一个领域的知识。也许有人会问,JAVA能调用WINDOWS的API吗?其实我也不确定能不能或者是否可以做到完全调用,但是我相信,这跟人的实力有关系,跟语言是没关系的。

今天就写到这里吧,还有好多想说的话慢慢再补充,现在我的手指头敲得都疼了。

你可能感兴趣的:(游戏开发)