APP下载

*1植物大战僵尸游戏辅助原理研究及实现

2016-06-20李静雅

李静雅,魏 红

(1.长治学院计算机系,山西 长治 046011; 2.太原科技大学,山西 太原 030024)



*1植物大战僵尸游戏辅助原理研究及实现

李静雅1,魏红2

(1.长治学院计算机系,山西 长治 046011; 2.太原科技大学,山西 太原 030024)

〔摘要〕针对“植物大战僵尸”游戏后面关卡设计过于困难,消磨了玩家兴趣,受众人群少的问题,提出基于游戏功能研究该游戏辅助.通过CE和OD分析游戏中阳光值、金币值、植物冷却时间等游戏数据的存储基址后,利用C++和win32编程实现游戏辅助.辅助实现后,可以在游戏运行过程中,依据玩家游戏进度的需要随时修改游戏中的数据,攻击僵尸时僵尸全屏显示且子弹重叠等功能.游戏辅助增强玩家的攻击力,降低游戏难度,提高游戏的耐玩度.语音控制辅助的功能,更好地提升了辅助的易用性.

〔关键词〕游戏辅助;基址;语音控制;CE

0引言

电脑游戏一种新的娱乐方式进入人们生活,成为人们缓解压力的方式之一.“植物大战僵尸”是2009年以来最受玩家喜爱的策略类塔防游戏,玩家通过种植多种不同植物,收获阳光,金币,向僵尸发子弹等操作,有效阻挡僵尸的入侵,保卫家园.不同的僵尸种类,不同的场景,稀奇的玩法构成多种游戏模式,增加游戏的可玩性,但游戏靠后关卡很难通过,玩家会逐渐失去兴趣.本文研究设计实现本款游戏的辅助,可以在玩家游戏过程中,根据玩家的需要,适时降低游戏某环节的难度,帮助玩家顺利通过关卡,使玩家尽情享受游戏的场景和通关乐趣,劳累时缓解压力.更好激发玩家的兴趣.还可以通过游戏辅助的设计方便快速找出游戏的漏洞,更好地实现游戏的保护.

1游戏辅助相关技术与软件

1.1反汇编技术

游戏辅助功能的实现,是要通过设计软件修改游戏软件中的相关数据,算法和代码进而改变游戏中的数据值.由于游戏的源代码无法得到,因此要对游戏分析和数据修改,就需要使用反汇编[1,2].游戏程序一般采用高级语言编写然后通过相应的编译程序生成可以在计算机上执行的机器语言程序.采用反汇编技术就是将机器语言程序反编译成汇编语言或该机语言程序[3,4],然后通过CE或者OD工具,分析反汇编出来的汇编语言程序,寻找需要修改的数据所在程序中的位置,修改数据.

1.2Microsoft Speech SDK

游戏辅助设计为了便于辅助功能的使用,可以采用语音控制辅助功能执行.用于在Windows平台上的语音应用程序和语音引擎开发的软件包可以使用微软公司的Microsoft Speech SDK[5],该软件包主要包括兼容32位的语音应用程序编程接口(Speech Application Programming Interface, SAPI)、微软语音合成引擎(TTS)及微软连续语音识别引擎(CSR),可以实现语音识别,本文采用SAPI实现语音辅助功能.

1.3Cheat Engine 内存修改软件

本文采用Cheat Engine开源的内存修改辅助工具,它包括16进制编辑,反汇编程序,内存查找工具等功能,可以查找并修改植物大战僵尸游戏的内存数据,软件具有强大的反汇编功能.运行软件后,需打开游戏进程,对需要修改的游戏数据值进行搜索,可以得到相应内存地址,之后回到游戏中,在游戏运行过程中,这个搜索的游戏数据会随游戏的运行改变,改变后,让CE多次搜索改变中的值,直到锁定需要修改数据.

2游戏辅助的总体设计

基于PC端的“植物大战僵尸”游戏辅助界面应该简单友好,玩家易使用操作,设计应采用与游戏相同,玩家熟知的术语,采用中文界面,系统可扩充,易维护.

游戏辅助是玩家在玩“植物大战僵尸游戏”时随时帮助玩家增加游戏中的阳光值,金币值,了解僵尸的数量和状态,在僵尸数量很多时,简化游戏中种植植物收获阳光值的时间或增强植物攻击僵尸的威力等,来不定时降低游戏的难度,帮助玩家连续通过多级关卡,使玩家体验不同模式,不同关卡游戏的场景,享受通关带来了成就感,缓解压力.因此,游戏辅助需要实时显示并修改游戏当前的阳光值和金币值;能够通过辅助取消种植植物的间隔,无间断种植需要的植物,并可以在一块土地上重复种植多个植物;玩家不需要自己收集阳光和金币,通过辅助可以自动收集;需要实现连续多颗子弹同时发射攻击僵尸,可以让逐渐出现的僵尸一起出现,用户及时了解本级僵尸的数量;在全屏游戏时,辅助的功能无法方便使用,需要切换界面来控制辅助软件,语音控制功能的实现可轻松方便地使用辅助.“植物大战僵尸”游戏辅助的功能结构如图1所示.

图1 游戏辅助功能图

3游戏辅助的实现

3.1游戏阳光值基址的分析

游戏辅助是对游戏中的数据根据用户的需要及时进行修改,在修改数据时,不能影响游戏的运行,使游戏转换到更易于玩家的获胜的状态继续游戏.辅助的实现是首先要知道可以对游戏中的哪些数据进行修改,游戏中数据是多少,存储在内存的哪个单元中,单元地址是什么,然后在对该地址下的数据进行相应的操作.游戏使用的是动态内存,每次运行游戏时,分配给游戏的内存地址都不会一样,因此,需要找出游戏中数据的基址,即不改变的游戏数据的真实地址,才可以正确地对游戏中的数据进行修改.“植物大战僵尸”游戏中的数据主要是有阳光值、金币值等,本文以阳光值基址的分析为例说明.

找到游戏中阳光值的内存地址,但内存地址在每次重新加载游戏时是会改变的,对该地址下的数据进行修改,只能满足当次游戏时阳光值修改成功,一旦关闭游戏重新开始,修改该地址下的阳光值,游戏中的阳光值就不能被修改.因此要找到阳光值的基址,不随游戏加载改变的存放阳光值的地址,关键是把图2所示的基址1地址,偏移量1、2找到.

基址1地址,偏移量1、偏移量2找到后根据公式可以得到游戏中的阳光值:

基址2=(基址1)+偏移量 1;

阳光值的内存地址=(基址2)+偏移量2;

阳光值=(阳光值的内存地址)

图2 寻找基址图

使用工具CheatEngine6.4简体中文版可以寻找游戏中数据的基址.运行CE后将“植物大战僵尸游戏”进程附加进CE程序,开始寻找需要数据(阳光值为例)的基址,扫描是多次反复的过程,通过不断修改阳光值,得到当前阳光值的地址,寻找是什么改写这个地址,可得到若干条改写阳光值数据的汇编代码,根据代码找到偏移地址1和2,其中偏移地址的查找如图3(a)所示,将得到的阳光值基址和偏移地址添加到CE的Add address中,就可以得到阳光值的真正地址,利用程序对这个地址下的数据进行修改,就可以随时改变游戏中的阳光值.本例研究中的阳光值基址为:偏移地址1是:5560H;偏移地址2是:768H;则阳光值的真正地址如图3(b)所示.

(a)偏移地址(b)阳光值的地址图3 游戏中阳光值的真正地址分析

3.2游戏辅助的实现

基于PC端的“植物大战僵尸”游戏辅助采用Win32中定义窗口类并给相应的属性赋值创建了主窗口,如图4所示.

图4 游戏辅助主界面

主窗口中的控件使用CreateWindow[5.6]的方法创建.采用Windows的消息机制运行,将控件的创建放在消息循环中的WM_CREATE中,由于游戏中的当前阳光值和金币值需要实时显示,因此需要给这两个标签分别设置定时器.

辅助实现了窗口界面,获取游戏运行时的句柄和ID等相关信息是游戏辅助程序编写的关键,通过Windows提供的API函数FindWindow()[5]GetWindowThreadProcessID()[4]等方法来实现.在游戏进程时首先需要提升游戏辅助程序的访问权限,这样游戏辅助才可以直接访问游戏的内存空间.

辅助获取了游戏的进程信息,获取游戏中需要修改数据的数值后,再对数据进行修改,阳光值,金币值的修改和显示是在使用CE工具得到基址后实现的,采用WriteProcessMemory()[5,7]方法写入游戏中,修改其值.对于免CD功能是将植物种植的时间间隔变为0,即可以不间断地种植植物,将影响CD时间状态的相关汇编字节存储后,写入游戏的CD时间基址汇总,实现在阳光值充足的情况下无间隔无限种植植物.辅助还实现了自动收集阳光值金币值,植物重叠种植,全屏显示全部僵尸等功能,功能齐全,使用方便.

辅助可以通过语音来控制实现的功能,玩家可以在全屏模式下玩游戏,需要辅助时,只需要说出辅助的功能,相应的功能即可生效.

4结论

本文研究实现“植物大战僵尸”游戏的辅助,探讨游戏辅助实现中游戏数据的基址寻找方案,是辅助实现的关键.游戏运行时的句柄和ID信息的获取是针对性实现各游戏辅助的基础.辅助实现后,功能齐全,使用简单便捷,降低了游戏通关难度,使玩家尽享游戏场景乐趣和通关的满足.游戏玩家选择关卡的功能和辅助界面的美化还需后续进一步完善.

参考文献:

[1]刑瑞.C++反编译技术研究与应用[D].南京:南京大学,2012

[2]高海涛.游戏外挂与反外挂技术的研究与应用[D].内蒙古:内蒙古大学,2014

[3]黄文彬.游戏反外挂系统设计与实现[D].北京:中国科学院大学,2013

[4]胡政.C++逆编译中模板库函数识别研究[D].合肥:中国科学技术大学,2006

[5]葛子昂,周靖.Windows核心编程[M].第五版.北京:清华大学出版社,2008,198-227

[6]仰燕兰,金晓雪,叶桦.ASP.NET AJAX框架研究及其在Web开发中的应用[J].计算机应用与软件,2011,28(6):195-198

[7]王文东,李竹林,尚建人.汇编语言与C语言的混合程序设计技术[J].计算机技术与发展,2006,16(8):18-20

"Plants VS Zombies" Auxiliary Principle and its Implementation

LI Jingya1, WEI Hong2

( 1.Computer Department, Changzhi University, Changzhi 046011;2.Taiyuan University of Science & Technology, Taiyuan 030024, China)

〔Abstract〕For the problems of plants vs zombies games which were too difficult in later levels to spend a lot of interest in players and reduced the amount of players, an assistance based on the game function was studied. Through CE and OD to analyze game store address of game data including the value of sunlight, gold value, plant cooling time and so on, the C++ and win32 programming language were used to implement the auxiliary function. When the program implemented, some function could be achieved. Such as players could modify game data at any time on the basis of their need in the game process, zombies full-screen displayed and bullets overlapped when zombies were under attack. The assistance enhanced the players’ attack power, reduced the difficulty of the game and improved the pleasure of game. Especially using the auxiliary function of voice control in the game, the usability of assistance had been greatly improved.

〔Key words〕game auxiliary; base address; speech control;CE

*收稿日期:2015-12-14

作者简介:李静雅(1982-),女,山西长治人,硕士,长治学院计算机系讲师,主要从事智能信息处理研究.

〔文章编号〕1672-2027(2016)01-0039-04〔中图分类号〕TP311

〔文献标识码〕A