第61章:外挂原理(2 / 3)
作品:《醉风月》“第三种呢?”孙问。
“就是利用游戏漏洞,向服务器发送虚假的非法数据实现角色穿墙瞬移等等超能力,这种就需要比较高超的技术了。首先他必须具备制作第二种程序的能力了,在此基础上他还能善于发现游戏设计的漏洞加以利用。”
“那么外挂程序如何操纵角色动作?”孙问。
“有些外挂可以伪造数据报发送给服务器,从而可以取代游戏的客户端直接操作角色行动。但是这种制作难度高,而且很容易被发现,一旦被发现角色就容易被封号。所以现在大多数的外挂都是通过向游戏发送模拟的按键信息
来驱动角色的动作,也就是说,客户端必须存在。对于这种就比较难被监测到了。”
“那你们是如何防范这些外挂作弊的呢?”孙轶民用右手柱起脑袋,望着老赵,好奇的问。
对此,老赵耐心的解释了一番:“对于第三种,主要是修补系统漏洞。一般来说我们的工作基本上可以让这些外挂生存很短时间。对于第二种,最关键的措施就是对于传输的数据进行加密了,加密方式越高级越安全。就现在而言,基本上没人能够破解这种传输方式的,所以,这种外挂的制作难度非常高。对于第一种的话,只能从客户端着手,让客户端程序检测收到的按键信息是否虚构,但这个其实很难预防,因为聪明的程序员完全可以把窗口消息
模拟的真假难辨。不过我们还有另外一种方法,那就是扫描客户端所在电脑的进程列表,找出市面上常见的那种按键外挂的进程名称,上报给服务器就行了。”
“加密?难道以前的游戏都是明码传输数据的?”孙问。
“嗯。以前的网游数据传送方式基本不加密,或者加密方式非常简单,很容易被人破解,所以导致辅助程序泛滥。但现在情况不一样了。它在数据传输方面采用了更复杂更强壮的加密方式,因此你想通过解读数据报来获取游戏数值是难上加难,更别说想通过程序向服务器发送模拟的游戏数据了。”
“那可以通过锁定关键数值的虚存地址,也可以随时获取数据啊?”孙轶民脱口而出。
“虚存中存储的游戏数据也是经过加密转换的,不知道加密方式,你根本就没办法去分析,还谈什么获取地址?”老赵笑道。
孙轶民愕然。思索良久,又想到了一点,问道:“其实除了解读数据报和分析虚存地址,还有一种方法也可以获取数据,那就是通过子窗口句柄。比如说,我想让程序获取我的角色身上携带的金币数量,那么我可以先锁定包裹界面的子窗口句柄,然后通过句柄号调用api函数,就可以获取此子窗口上的任何数据。不是么?”
“呵呵,你能想到的,我们反外挂部门都想到了。构建客户端界面采用windows子窗口?那是老古董的网游设计师的做法了。现在的网游界面除了一个主窗口,在其内部没有任何一个子窗口。所有的对话框,文本框,都是采用gdi函数画出来的,明白么?唯一你能得到的,是游戏主窗口的句柄号,但那没有任何意义。”
原本对于制作战斗辅助程序信心满怀的孙轶民,此时忽然遭到了沉重的打击。可以想见,醉风月的运营方,肯定也做了这样的防范措施。看来自己的宏大目标只能停留在构想状态了,根本无法付诸实施。
而老赵的总结也从侧面证实了这一点:“事实上通过采取这些防范措施,现在市面上真正牛逼的网游辅助程序已经很少见。现在市面上有的辅助程序,无非就是一些按键精灵之类的软件,虽然有些先进一些可以自助写按键脚本,但本质上还是盲人摸象类型的。没什么用的。”