CN105233499B - 一种游戏代码校验的方法及游戏客户端、系统 - Google Patents

一种游戏代码校验的方法及游戏客户端、系统 Download PDF

Info

Publication number
CN105233499B
CN105233499B CN201510629594.7A CN201510629594A CN105233499B CN 105233499 B CN105233499 B CN 105233499B CN 201510629594 A CN201510629594 A CN 201510629594A CN 105233499 B CN105233499 B CN 105233499B
Authority
CN
China
Prior art keywords
game
component
code
verification
code segment
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201510629594.7A
Other languages
English (en)
Other versions
CN105233499A (zh
Inventor
王泽森
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangzhou Huaduo Network Technology Co Ltd
Original Assignee
Guangzhou Huaduo Network Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Guangzhou Huaduo Network Technology Co Ltd filed Critical Guangzhou Huaduo Network Technology Co Ltd
Priority to CN201510629594.7A priority Critical patent/CN105233499B/zh
Publication of CN105233499A publication Critical patent/CN105233499A/zh
Application granted granted Critical
Publication of CN105233499B publication Critical patent/CN105233499B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Storage Device Security (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明公开了一种游戏代码校验方法及游戏客户端、系统。其中,游戏代码校验方法包括:游戏启动后,客户端获取需要校验的游戏的至少一个组件名称,调用代码校验函数,对组件的代码段进行校验,若组件的代码段校验通过,保持对应的游戏玩家账号正常游戏,否则,将游戏玩家信息上报服务器,以待处理。通过上述方式,本发明能够有效的防止修改代码类游戏外挂软件,提高游戏玩家的游戏体验和保证游戏运营公司的正常收入。

Description

一种游戏代码校验的方法及游戏客户端、系统
技术领域
本发明涉及网络游戏领域,具体涉及一种游戏代码校验的方法及游戏客户端、系统。
背景技术
随着网络游戏的逐步普及,以及网络游戏的每年的丰富的利润,游戏外挂软件也由此衍生,但是外挂会影响正常网络游戏玩家的游戏体验和影响游戏运营公司的正常收入,正常游戏玩家和游戏运营公司都非常反感游戏外挂软件。
但是目前还没有很好的方法能够有效的防止游戏外挂软件,不能很好的维护正常游戏玩家和游戏运营公司的利益。
发明内容
本发明主要解决的技术问题是提供一种游戏代码校验的方法及客户端、系统,能够有效防止修改代码类的游戏外挂,提升游戏玩家体验,让游戏更好的运营。
第一方面,本发明实施例提供一种游戏代码校验方法,所述方法包括:游戏启动后,获取需要校验的游戏的至少一个组件名称,所述组件为所述游戏下的功能组件;调用代码校验函数,对所述组件的代码段进行校验;若所述组件的代码段校验通过,保持对应的游戏玩家账号正常游戏,若所述组件的代码段校验未通过,将所述游戏玩家信息上报服务器,以待处理。
其中,所述调用代码校验函数,对所述组件的代码段进行校验包括以下步骤:调用代码校验函数,读取所述组件的文件路径,并按照内存对齐的方式将所述组件的原始代码段加载到内存中;根据预存的物理文件中的可执行文件头,修正所述组件的原始代码段重定位信息;计算修正重定位信息后的所述原始代码段的循环冗余码校验值和所述游戏在内存中正运行的对应组件代码段的循环冗余码校验值;判断两个循环冗余码校验值是否一致;若一致,所述组件的代码段校验通过,否则,所述组件的代码段校验未通过。
其中,所述调用代码校验函数,对所述组件的代码段进行校验包括:调用代码校验函数,将所述组件的代码段分成多个子代码段,按照预定规则分别对至少部分所述子代码段进行校验。
其中,所述需要校验游戏的组件为多个。
其中,游戏启动后,获取需要校验的游戏的至少一个组件名称包括:游戏启动后,每隔预定时间获取需要校验的游戏的至少一个组件名称。
第二方面,提供一种游戏代码校验方法,所述方法包括:游戏启动后,客户端获取需要校验的游戏的至少一个组件名称,所述组件为所述游戏下的功能组件;调用代码校验函数,对所述组件的代码段进行校验;若所述组件的代码段校验通过,保持对应的游戏玩家账号正常游戏,若所述组件的代码段校验未通过,将所述游戏玩家信息上报服务器;所述服务器接收所述游戏玩家信息,对所述游戏玩家进行处理,以使所述游戏玩家不能正常进行游戏。
第三方面,提供一种游戏客户端,所述游戏客户端包括获取模块、校验模块以及控制模块,其中:所述获取模块用于在游戏启动后,获取需要校验的游戏的至少一个组件名称,所述组件为所述游戏下的功能组件;所述校验模块用于调用代码校验函数,对所述组件的代码段进行校验;所述控制模块用于在所述组件的代码段校验通过时,保持对应的游戏玩家账号正常游戏,在所述组件的代码段校验未通过时,控制将所述游戏玩家信息上报服务器,以待处理。
其中,所述校验模块包括加载单元、修正单元、计算单元、判断单元以及指示单元,其中:所述加载单元用于调用代码校验函数,读取所述组件的文件路径,并按照内存对齐的方式将所述组件的原始代码段加载到内存中;所述修正单元用于根据预存的物理文件中的可执行文件头,修正所述组件的原始代码段重定位信息;所述计算单元用于计算修正重定位信息后的所述原始代码段的循环冗余码校验值和所述游戏在内存中正运行的对应组件代码段的循环冗余码校验值;所述判断单元用于判断所述计算单元计算得到的两个循环冗余码校验值是否一致;所述指示单元用于在所述判断单元判断到两个循环冗余码校验值一致时,指示所述组件的代码段校验通过,否则,指示所述组件的代码段校验未通过。
其中,所述校验模块通过调用代码校验函数,将所述组件的代码段分成多个子代码段,按照预定规则分别对至少部分所述子代码段进行校验。
其中,所述需要校验游戏的组件为多个。
其中,所述获取模块在游戏启动后,每隔预定时间获取需要校验的游戏的至少一个组件名称。
第四方面,提供一种游戏系统,所述游戏系统包括游戏客户端以及服务器,其中,所述客户端包括获取模块、校验模块以及控制模块,其中:所述获取模块用于在游戏启动后,获取需要校验的游戏的至少一个组件名称,所述组件为所述游戏下的功能组件;所述校验模块用于调用代码校验函数,对所述组件的代码段进行校验;所述控制模块用于在所述组件的代码段校验通过时,保持对应的游戏玩家账号正常游戏,在所述组件的代码段校验未通过时,控制将所述游戏玩家信息上报服务器;所述服务器包括接收模块和处理模块,其中:所述接收模块用于接收所述游戏玩家信息;所述处理模块用于根据所述游戏玩家信息对所述游戏玩家进行处理,以使所述游戏玩家不能正常进行游戏。
本发明的有益效果是:区别于现有技术的情况,本发明通过游戏启动后,客户端获取需要校验的游戏的至少一个组件名称,调用代码校验函数,对组件的代码段进行校验,若组件的代码段校验通过,保持对应的游戏玩家账号正常游戏,否则,将所述游戏玩家信息上报服务器,以待处理。通过这样的方式,能够通过代码校验的方式,来校验游戏组件的代码是否被修改,在游戏组件的代码校验没有通过时,即通过服务器对游戏玩家进行处理。从而能够有效的防止修改代码类游戏外挂软件,提高游戏玩家的游戏体验和保证游戏运营公司的正常收入。
附图说明
图1是本发明实施例提供的一种游戏代码校验方法的流程图;
图2是本发明实施例提供的调用代码校验函数,对组件的代码段进行校验的流程图;
图3是本发明实施例提供的另一种游戏代码校验方法的流程图;
图4是本发明实施例提供的一种游戏客户端的结构示意图;
图5是本发明实施例提供的游戏客户端的校验模块的结构示意图;
图6是本发明实施例提供的一种游戏系统的结构示意图。
具体实施方式
首先,介绍一下本发明的应用场景和实际需求。
网络游戏,英文名称为Online Game,又称“在线游戏”,简称“网游”。指以互联网为传输媒介,以游戏运营商服务器和用户计算机为处理终端,以游戏客户端软件为信息交互窗口的旨在实现娱乐、休闲、交流和取得虚拟成就的具有可持续性的个体性多人在线游戏。
网络游戏一般采用C/S结构,客户端负责绘制游戏世界的实时画面,服务器端则负责响应所有客户端的连接请求和游戏逻辑处理,并控制所有客户端的画面绘制,客户端与服务器通过网络数据包交互完成每一步游戏逻辑。
本发明的是在上述系统架构中实现的。
现有的网络游戏中,出现很多游戏外挂软件,所谓外挂是指利用电脑技术针对一个或多个网络游戏,通过改变游戏软件的部分程序制作而成的作弊程序。外挂软件给部分玩家带来刺激与兴奋之后,也破坏了游戏规则,这类的外挂已经严重影响了游戏的公平性,致使其他玩家无法与使用外挂的玩家进行抗衡,于是越来越多的玩家离开了游戏,网络游戏的运营商也逐步丧失了市场。因此外挂软件损害了玩家的利益也损害了运营商的利益,从某种程度上说也破坏了网络经济的健康发展。
本发明即是提供一种游戏代码校验方法,通过在游戏启动后,获取需要校验的游戏的至少一个组件名称,调用代码校验函数,对组件的代码段进行校验,若组件的代码段校验通过,保持对应的游戏玩家账号正常游戏,否则,将所述游戏玩家信息上报服务器,以待处理。通过这样的方式,能够通过代码校验的方式,来校验游戏组件的代码是否被修改,在游戏组件的代码校验没有通过时,即通过服务器对游戏玩家进行处理。从而能够有效的防止修改代码类游戏外挂软件,提高游戏玩家的游戏体验和保证游戏运营公司的正常收入。
以下结合附图和实施方式对本发明进行详细说明。
请参阅图1,图1是本发明实施例提供的一种游戏代码校验方法的流程图,本实施例以游戏客户端作为执行主体来进行描述,如图所示,本实施例的游戏代码校验方法包括以下步骤:
S10:游戏启动后,获取需要校验的游戏的至少一个组件名称。
这里组件是指实现游戏特定功能的功能组件或者也可以叫做功能模块。通常实现一个功能对应一个组件,所有功能的组件进行组合即构成游戏软件。比如实现加密功能的加密组件、设置的设置组件或者显示组件等等。
游戏启动后,游戏的所有组件在内存中运行,用户可以进行游戏。游戏客户端获取需要校验的游戏的一个或者多个组件名称。需要校验的游戏的组件名称是用户手动添加或者客户端自动识别获取的组件名称,比如游戏A的组件a、组件b、组件c、组件d等等。在本发明中,需要校验的游戏的组件,可以是游戏的所有组件,也可以只是部分组件,为了提高校验速度和效率,优选只对可能被恶意修改的部分组件进行校验。比如只对游戏的主要组件部分进行校验。
S11:调用代码校验函数,对组件的代码段进行校验。
其中,作为一种可能的实现方式,请进一步参阅图2,图2是本发明实施例提供的调用代码校验函数,对组件的代码段进行校验的流程图,如图所示,主要包括以下子步骤:
S110:调用代码校验函数,读取组件的文件路径,并按照内存对齐的方式将组件的原始代码段加载到内存中。
文件路径是指唯一且具体的能够找到组件的文件地址。找到组件在电脑上的具体位置后,按照内存对齐的规则将组件的原始代码段对齐后加载到内存中。
S111:根据预存的物理文件中的可执行文件头,修正组件的原始代码段重定位信息。
可执行文件(executable file)指的是可以由操作系统进行加载执行的文件。在不同的操作系统环境下,可执行程序的呈现方式不一样。比如在windows操作系统下,可执行程序可以是.exe文件.sys文件.com等类型文件。
根据系统预存的物理文件中的可执行文件头(PE头),修正加载到内存中的组件的原始代码段的重定位信息,以对原始代码段进行重定位,从而使得重定位后的原始代码段与原来该组件加载到内存中没经过修改时的代码段保持一致。
所谓重定位,是程序编译时每个模块有一个优先加载地址Image Base,这个值是连接器给出的,因此连接器生成的指令中的地址是在假设模块被加载到Image Base前提之下生成的,那么一旦程序没有将模块加载到Image Base时,程序中的指令地址就需要重新定位。程序主要依据重定位表对指令地址进行重定位。本发明对原始代码段进行重定位的具体实现与现有的重定位方式基本一致,在此不再赘述。
S112:计算修正重定位信息后的原始代码段的循环冗余码校验值和游戏在内存中正运行的对应组件代码段的循环冗余码校验值。
对进行重定位后的原始代码段,计算得到其循环冗余码校验值(CyclicRedundancy Check,CRC)并保存。并计算游戏在内存中正运行的对应组件代码段的CRC保存。这里游戏在内存中正运行的对应组件是指与上述加载的组件对应的组件。比如待校验的为游戏中的A组件,则计算内存中游戏正在运行的A组件代码段的CRC。
S113:判断两个循环冗余码校验值是否一致。
将以上计算得到的两个CRC值是否一致。针对游戏外挂软件,部分是通过修改游戏中某组件的代码来实现。如果该游戏存在外挂软件,在进行游戏的组件代码段校验时,就会发现游戏运行中组件的代码段被修改,可以及时进行处理。
如果游戏在内存中正运行的组件代码段的CRC与上述计算的原始代码段的CRC不一致,则说明该组件代码段被修改过,存在修改代码类外挂软件,这时,执行S115。如果两个CRC一致,说明该组件代码段没有被修改,执行S114。
S114:组件的代码段校验通过。
在两个CRC值一致时,组件的代码段校验通过。
S115:组件的代码段校验未通过。
在两个CRC不一致时,组件的代码段校验未通过。
需要说明的时,本发明实施例在对组件代码段进行校验时,可以将组件代码段分成多个子代码段,按照预定规则分别对至少部分子代码段进行校验。
也就是说,本发明实施例在对组件代码段进行校验时,可以通过分段校验的方式进行校验。可以将组件代码段按照分成预定长度的多个子代码段,然后分别对多个子代码段一一进行校验,也可以跳过某些代码段不校验,只校验其中部分子代码段。
因为,游戏启动后,游戏组件的某些代码段可能在运行时是需要进行调整或修改,为避免校验出错,可以跳过这些代码段,以避免校验错误而影响玩家的体验。因此,可以设定预定规则,只对组件的其中部分代码进行校验,跳过某些可能由于游戏运行需要而需要调整的代码段。在进行校验时,根据预定规则只对其中部分代码段进行校验,这样既不影响检测同时又兼容其他的功能实现。
其中,需要说明的是,上述对组件代码段进行校验时,需要校验游戏的组件可以是多个,也就是说,本发明实施例的方法可以支持多组件代码段校验。
当需要校验游戏的组件为多个时,客户端通过串行的方式分别对多个组件的代码段进行校验。比如游戏的组件A、B、C、D都需要校验,客户端对组件A的代码段进行校验完毕再分别进行组件B、C、D的代码段校验。当然,校验的顺序可以是随机,也可以按照获取需要校验游戏的组件代码段的先后顺序依次执行。
另外,可以通过特定的方式来指示校验结果,比如返回1标识游戏代码段被修改,校验未通过,返回0标识游戏代码段未被修改,校验通过。指示校验结果的方式可以根据需要进行设定,对此本发明不做限定。
S12:判断校验是否通过。
根据校验结果,判断校验是否通过。如果校验通过,执行S13,否则,执行S14。
S13:保持对应的游戏玩家账号正常游戏。
当游戏组件的代码段校验通过时,保持对应的游戏玩家账号正常游戏。这里对应的游戏玩家是指当前客户端上登录进行游戏的游戏玩家。
S14:将对应的游戏玩家信息上报服务器,以待处理。
当游戏组件的代码段校验未通过时,将对应的游戏玩家信息上报服务器,以待处理。其中,游戏玩家信息至少包括游戏玩家ID。
其中,服务器接收到游戏玩家信息后,根据游戏玩家ID,可以对该游戏玩家进行处理,以使该玩家无法正常进行游戏。比如可以是封号、或者踢出局、或者结束游戏进程等。
另外,为了确保校验的实效性和准确性,可以设定每隔预定时间进行一次上述校验。即客户端在游戏启动后,每隔预定时间获取需要校验的游戏的至少一个组件名称,根据组件名称对组件进行校验。这里的预定时间可以根据需要进行设定,比如10分钟、半小时等等。
以上本发明实施例提供的游戏代码校验方法,通过游戏启动后,客户端获取需要校验的游戏的至少一个组件名称,调用代码校验函数,对组件的代码段进行校验,若组件的代码段校验通过,保持对应的游戏玩家账号正常游戏,否则,将所述游戏玩家信息上报服务器,以待处理。通过这样的方式,能够通过代码校验的方式,来校验游戏组件的代码是否被修改,在游戏组件的代码校验没有通过时,即通过服务器对游戏玩家进行处理。从而能够有效的防止修改代码类游戏外挂软件,提高游戏玩家的游戏体验和保证游戏运营公司的正常收入。
并且,本发明实施例在对组件的代码段进行校验时,还支持分段校验,可以根据预定规则只对其中部分代码段进行校验,跳过程序本身需要修改的部分代码段,从而既不影响校验检测而且也可以兼容其他功能。
请进一步参阅图3,图3是本发明实施例提供的另一种游戏代码校验方法的流程图,本实施例是以游戏系统的角度来进行描述,如图所示,本实施例的游戏代码校验方法包括以下步骤:
S20:游戏启动后,客户端获取需要校验的游戏的至少一个组件名称。
这里组件是指实现游戏特定功能的功能组件或者也可以叫做功能模块。通常实现一个功能对应一个组件,所有功能的组件进行组合即构成游戏软件。比如实现加密功能的加密组件、设置的设置组件或者显示组件等等。
游戏启动后,游戏的所有组件在内存中运行,用户可以进行游戏。游戏客户端获取需要校验的游戏的一个或者多个组件名称。需要校验的游戏的组件名称是用户手动添加或者客户端自动识别获取的组件名称,比如游戏A的组件a、组件b、组件c、组件d等等。在本发明中,需要校验的游戏的组件,可以是游戏的所有组件,也可以只是部分组件,为了提高校验速度和效率,优选只对可能被恶意修改的部分组件进行校验。比如只对游戏的主要组件部分进行校验。
S21:调用代码校验函数,对组件的代码段进行校验。
其中,对组件的代码段进行校验的具体实现流程请参阅上述图2所示实施例的详细说明,这里不再赘述。
S22:判断校验是否通过。
根据校验结果,判断校验是否通过。如果校验通过,执行S23,否则,执行S24。
S23:保持对应的游戏玩家账号正常游戏。
当游戏组件的代码段校验通过时,保持对应的游戏玩家账号正常游戏。这里对应的游戏玩家是指当前客户端上登录进行游戏的游戏玩家。
S24:将对应的游戏玩家信息上报服务器。
当游戏组件的代码段校验未通过时,将对应的游戏玩家信息上报服务器,以待处理。其中,游戏玩家信息至少包括游戏玩家ID。
S25:服务器接收游戏玩家信息,对游戏玩家进行处理,以使游戏玩家不能正常进行游戏。
其中,服务器接收到游戏玩家信息后,根据游戏玩家ID,可以对该游戏玩家进行处理,以使该玩家无法正常进行游戏。比如可以是封号、或者踢出局、或者结束游戏进程等。
另外,为了确保校验的实效性和准确性,可以设定每隔预定时间进行一次上述校验。即客户端在游戏启动后,每隔预定时间获取需要校验的游戏的至少一个组件名称,根据组件名称对组件进行校验。这里的预定时间可以根据需要进行设定,比如10分钟、半小时等等。
请参阅图4,图4是本发明实施例提供的一种游戏客户端的结构示意图,如图所示,本实施例的游戏客户端100包括获取模块10、校验模块11以及控制模块12,其中:
获取模块10用于在游戏启动后,获取需要校验的游戏的至少一个组件名称,组件为游戏下的功能组件。
这里组件是指实现游戏特定功能的功能组件或者也可以叫做功能模块。通常实现一个功能对应一个组件,所有功能的组件进行组合即构成游戏软件。比如实现加密功能的加密组件、设置的设置组件或者显示组件等等。
游戏启动后,游戏的所有组件在内存中运行,用户可以进行游戏。游戏客户端获取需要校验的游戏的一个或者多个组件名称。需要校验的游戏的组件名称是用户手动添加或者客户端自动识别获取的组件名称,比如游戏A的组件a、组件b、组件c、组件d等等。在本发明中,需要校验的游戏的组件,可以是游戏的所有组件,也可以只是部分组件,为了提高校验速度和效率,优选只对可能被恶意修改的部分组件进行校验。比如只对游戏的主要组件部分进行校验。
校验模块11用于调用代码校验函数,对组件的代码段进行校验。
其中,校验模块11在对组件代码段进行校验时,可以将组件代码段分成多个子代码段,按照预定规则分别对至少部分子代码段进行校验。
也就是说,本发明实施例在对组件代码段进行校验时,可以通过分段校验的方式进行校验。可以将组件代码段按照分成预定长度的多个子代码段,然后分别对多个子代码段一一进行校验,也可以跳过某些代码段不校验,只校验其中部分子代码段。
因为,游戏启动后,游戏组件的某些代码段可能在运行时是需要进行调整或修改,为避免校验出错,可以跳过这些代码段,以避免校验错误而影响玩家的体验。因此,可以设定预定规则,只对组件的其中部分代码进行校验,跳过某些可能由于游戏运行需要而需要调整的代码段。在进行校验时,根据预定规则只对其中部分代码段进行校验,这样既不影响检测同时又兼容其他的功能实现。
其中,需要说明的是,校验模块11对组件代码段进行校验时,需要校验游戏的组件可以是多个,也就是说,本发明实施例的方法可以支持多组件代码段校验。
当需要校验游戏的组件为多个时,校验模块11通过串行的方式分别对多个组件的代码段进行校验。比如游戏的组件A、B、C、D都需要校验,客户端对组件A的代码段进行校验完毕再分别进行组件B、C、D的代码段校验。当然,校验的顺序可以是随机,也可以按照获取需要校验游戏的组件代码段的先后顺序依次执行。
其中,请进一步参阅图5,图5是本发明实施例提供的校验模块的结构示意图,如图所示,本实施例的校验模块11包括加载单元110、修正单元111、计算单元112、判断单元113以及指示单元114,其中:
加载单元110用于调用代码校验函数,读取组件的文件路径,并按照内存对齐的方式将组件的原始代码段加载到内存中。
文件路径是指唯一且具体的能够找到组件的文件地址。找到组件在电脑上的具体位置后,按照内存对齐的规则将组件的原始代码段对齐后加载到内存中。
修正单元111用于根据预存的物理文件中的可执行文件头,修正组件的原始代码段重定位信息。
可执行文件(executable file)指的是可以由操作系统进行加载执行的文件。在不同的操作系统环境下,可执行程序的呈现方式不一样。比如在windows操作系统下,可执行程序可以是.exe文件.sys文件.com等类型文件。
根据系统预存的物理文件中的可执行文件头(PE头),修正加载到内存中的组件的原始代码段的重定位信息,以对原始代码段进行重定位,从而使得重定位后的原始代码段与原来该组件加载到内存中没经过修改时的代码段保持一致。
所谓重定位,是程序编译时每个模块有一个优先加载地址Image Base,这个值是连接器给出的,因此连接器生成的指令中的地址是在假设模块被加载到Image Base前提之下生成的,那么一旦程序没有将模块加载到Image Base时,程序中的指令地址就需要重新定位。程序主要依据重定位表对指令地址进行重定位。修正单元111对原始代码段进行重定位的具体实现与现有的重定位方式基本一致,在此不再赘述。
计算单元112用于计算修正重定位信息后的原始代码段的循环冗余码校验值和游戏在内存中正运行的对应组件代码段的循环冗余码校验值。
计算单元112对进行重定位后的原始代码段,计算得到其循环冗余码校验值(Cyclic Redundancy Check,CRC)并保存。并计算游戏在内存中正运行的对应组件代码段的CRC保存。这里游戏在内存中正运行的对应组件是指与上述加载的组件对应的组件。比如待校验的为游戏中的A组件,则计算内存中游戏正在运行的A组件代码段的CRC。
判断单元113用于判断计算单元112计算得到的两个循环冗余码校验值是否一致。
判断单元113将计算单元112计算得到的两个CRC值是否一致。针对游戏外挂软件,部分是通过修改游戏中某组件的代码来实现。如果该游戏存在外挂软件,在进行游戏的组件代码段校验时,就会发现游戏运行中组件的代码段被修改,可以及时进行处理。
指示单元114用于在判断单元113判断到两个循环冗余码校验值一致时,指示组件的代码段校验通过,否则,指示组件的代码段校验未通过。
在两个CRC值一致时,指示单元114指示组件的代码段校验通过,在两个CRC值不一致时,指示组件的代码段校验未通过。
控制模块12用于在组件的代码段校验通过时,保持对应的游戏玩家账号正常游戏,在组件的代码段校验未通过时,控制将游戏玩家信息上报服务器,以待处理。
当游戏组件的代码段校验通过时,控制模块12保持对应的游戏玩家账号正常游戏。这里对应的游戏玩家是指当前客户端上登录进行游戏的游戏玩家。
当游戏组件的代码段校验未通过时,控制模块12控制将对应的游戏玩家信息上报服务器,以待处理。其中,游戏玩家信息至少包括游戏玩家ID。
另外,为了确保校验的实效性和准确性,可以设定每隔预定时间进行一次上述校验。即客户端在游戏启动后,获取模块10每隔预定时间获取需要校验的游戏的至少一个组件名称,根据组件名称对组件进行校验。这里的预定时间可以根据需要进行设定,比如10分钟、半小时等等。
请进一步参阅图6,图6是本发明实施例提供的一种游戏系统的结构示意图,如图所示,本实施例的游戏系统包括游戏客户端200以及服务器300,其中,游戏客户端200包括获取模块20、校验模块21以及控制模块22,其中,游戏客户端各个功能模块的具体功能实现请参阅图4与图5所示实施例的详细描述,在此不再赘述。本实施例的服务器300包括接收模块30以及处理模块31,其中:
接收模块30用于接收游戏玩家信息。
其中,游戏玩家信息至少包括游戏玩家ID。
处理模块31用于根据游戏玩家信息对游戏玩家进行处理,以使游戏玩家不能正常进行游戏。
处理模块31根据游戏玩家ID,可以对该游戏玩家进行处理,以使该玩家无法正常进行游戏。比如可以是封号、或者踢出局、或者结束游戏进程等。
以上本发明实施例提供的游戏代码校验方法及游戏客户端、系统的详细说明,可以理解,本发明能够在游戏启动后,通过对游戏组件的代码段进行校验,从而确定游戏组件的代码是否被修改,在游戏组件的代码被修改时,能够及时对游戏玩家进行处理,从而可以有效避免修改代码类游戏外挂软件,提高游戏玩家的游戏体验和保证游戏运营公司的正常收入。
另外,在进行校验时,支持代码分段校验,可以根据预定规则只对其中部分代码段进行校验,跳过程序本身需要修改的部分代码段,从而既不影响校验检测而且也可以兼容其他功能。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (10)

1.一种游戏代码校验方法,其特征在于,所述方法包括:
游戏启动后,客户端获取需要校验的游戏的至少一个组件名称,所述组件为所述游戏下的功能组件;
调用代码校验函数,将所述组件的代码段分成多个子代码段,按照预定规则分别对至少部分所述子代码段进行校验;
若所述组件的代码段校验通过,保持对应的游戏玩家账号正常游戏,若所述组件的代码段校验未通过,将所述游戏玩家信息上报服务器,以待处理。
2.根据权利要求1所述的游戏代码校验方法,其特征在于,所述调用代码校验函数,对所述组件的代码段进行校验包括以下步骤:
调用代码校验函数,读取所述组件的文件路径,并按照内存对齐的方式将所述组件的原始代码段加载到内存中;
根据预存的物理文件中的可执行文件头,修正所述组件的原始代码段重定位信息;
计算修正重定位信息后的所述原始代码段的循环冗余码校验值和所述游戏在内存中正运行的对应组件代码段的循环冗余码校验值;
判断两个循环冗余码校验值是否一致;
若一致,所述组件的代码段校验通过,否则,所述组件的代码段校验未通过。
3.根据权利要求1所述的游戏代码校验方法,其特征在于,所述需要校验游戏的组件为多个。
4.根据权利要求1所述的游戏代码校验方法,其特征在于,游戏启动后,获取需要校验的游戏的至少一个组件名称包括:
游戏启动后,每隔预定时间获取需要校验的游戏的至少一个组件名称。
5.一种游戏代码校验方法,其特征在于,所述方法包括:
游戏启动后,客户端获取需要校验的游戏的至少一个组件名称,所述组件为所述游戏下的功能组件;
调用代码校验函数,将所述组件的代码段分成多个子代码段,按照预定规则分别对至少部分所述子代码段进行校验;
若所述组件的代码段校验通过,保持对应的游戏玩家账号正常游戏,若所述组件的代码段校验未通过,将所述游戏玩家信息上报服务器;
所述服务器接收所述游戏玩家信息,对所述游戏玩家进行处理,以使所述游戏玩家不能正常进行游戏。
6.一种游戏客户端,其特征在于,所述游戏客户端包括获取模块、校验模块以及控制模块,其中:
所述获取模块用于在游戏启动后,获取需要校验的游戏的至少一个组件名称,所述组件为所述游戏下的功能组件;
所述校验模块用于调用代码校验函数,将所述组件的代码段分成多个子代码段,按照预定规则分别对至少部分所述子代码段进行校验;
所述控制模块用于在所述组件的代码段校验通过时,保持对应的游戏玩家账号正常游戏,在所述组件的代码段校验未通过时,控制将所述游戏玩家信息上报服务器,以待处理。
7.根据权利要求6所述的游戏客户端,其特征在于,所述校验模块包括加载单元、修正单元、计算单元、判断单元以及指示单元,其中:
所述加载单元用于调用代码校验函数,读取所述组件的文件路径,并按照内存对齐的方式将所述组件的原始代码段加载到内存中;
所述修正单元用于根据预存的物理文件中的可执行文件头,修正所述组件的原始代码段重定位信息;
所述计算单元用于计算修正重定位信息后的所述原始代码段的循环冗余码校验值和所述游戏在内存中正运行的对应组件代码段的循环冗余码校验值;
所述判断单元用于判断所述计算单元计算得到的两个循环冗余码校验值是否一致;
所述指示单元用于在所述判断单元判断到两个循环冗余码校验值一致时,指示所述组件的代码段校验通过,否则,指示所述组件的代码段校验未通过。
8.根据权利要求6所述的游戏客户端,其特征在于,所述需要校验游戏的组件为多个。
9.根据权利要求6所述的游戏客户端,其特征在于,所述获取模块在游戏启动后,每隔预定时间获取需要校验的游戏的至少一个组件名称。
10.一种游戏系统,其特征在于,所述游戏系统包括游戏客户端以及服务器,其中,所述客户端包括获取模块、校验模块以及控制模块,其中:
所述获取模块用于在游戏启动后,获取需要校验的游戏的至少一个组件名称,所述组件为所述游戏下的功能组件;
所述校验模块用于调用代码校验函数,将所述组件的代码段分成多个子代码段,按照预定规则分别对至少部分所述子代码段进行校验;
所述控制模块用于在所述组件的代码段校验通过时,保持对应的游戏玩家账号正常游戏,在所述组件的代码段校验未通过时,控制将所述游戏玩家信息上报服务器;
所述服务器包括接收模块和处理模块,其中:
所述接收模块用于接收所述游戏玩家信息;
所述处理模块用于根据所述游戏玩家信息对所述游戏玩家进行处理,以使所述游戏玩家不能正常进行游戏。
CN201510629594.7A 2015-09-25 2015-09-25 一种游戏代码校验的方法及游戏客户端、系统 Active CN105233499B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510629594.7A CN105233499B (zh) 2015-09-25 2015-09-25 一种游戏代码校验的方法及游戏客户端、系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510629594.7A CN105233499B (zh) 2015-09-25 2015-09-25 一种游戏代码校验的方法及游戏客户端、系统

Publications (2)

Publication Number Publication Date
CN105233499A CN105233499A (zh) 2016-01-13
CN105233499B true CN105233499B (zh) 2019-02-22

Family

ID=55031472

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510629594.7A Active CN105233499B (zh) 2015-09-25 2015-09-25 一种游戏代码校验的方法及游戏客户端、系统

Country Status (1)

Country Link
CN (1) CN105233499B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106055933B (zh) * 2016-06-24 2019-08-23 武汉斗鱼网络科技有限公司 一种客户端软件代码校验的方法及系统
CN106708555B (zh) * 2016-06-29 2019-01-22 腾讯科技(深圳)有限公司 一种加载插件的方法和装置
CN107038353B (zh) * 2017-03-28 2020-07-31 武汉斗鱼网络科技有限公司 软件程序的校验保护方法及系统
CN108970122B (zh) * 2018-06-28 2021-06-08 广州华多网络科技有限公司 防止外挂的方法、装置、终端及存储介质
CN109453522B (zh) * 2018-11-09 2022-06-14 火烈鸟网络(广州)股份有限公司 游戏运行安全检测方法及装置、存储介质、电子设备
CN109731339B (zh) * 2018-12-17 2022-04-12 福建天晴数码有限公司 检测外挂的方法、存储介质
CN111265860B (zh) * 2020-01-07 2023-08-04 广州虎牙科技有限公司 游戏存档处理方法、装置、终端设备及可读存储介质
CN111569434B (zh) * 2020-05-14 2023-12-15 宁波元素人网络科技有限公司 一种游戏代码校验的方法及系统

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1744525A (zh) * 2005-09-22 2006-03-08 车欠军 一种防止在网络游戏中使用外挂的方法
CN101105825A (zh) * 2006-07-12 2008-01-16 珠海市西山居软件有限公司 一种可反外挂的网络游戏系统及网络游戏系统反外挂的方法
CN101187959A (zh) * 2006-11-17 2008-05-28 中兴通讯股份有限公司 基于决策树的游戏作弊检测方法
CN102158367A (zh) * 2010-12-17 2011-08-17 中国科学技术大学苏州研究院 主动反外挂的网络游戏系统及网络游戏系统反外挂方法
CN102902915A (zh) * 2012-09-29 2013-01-30 北京奇虎科技有限公司 对文件行为特征进行检测的系统
CN103166806A (zh) * 2011-12-14 2013-06-19 腾讯科技(深圳)有限公司 第三方应用的外挂程序检测方法和系统
CN104134044A (zh) * 2013-07-29 2014-11-05 腾讯科技(深圳)有限公司 一种数据安全性的检测方法、装置和系统
CN104252592A (zh) * 2013-06-27 2014-12-31 贝壳网际(北京)安全技术有限公司 外挂应用程序的识别方法及装置

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1744525A (zh) * 2005-09-22 2006-03-08 车欠军 一种防止在网络游戏中使用外挂的方法
CN101105825A (zh) * 2006-07-12 2008-01-16 珠海市西山居软件有限公司 一种可反外挂的网络游戏系统及网络游戏系统反外挂的方法
CN101187959A (zh) * 2006-11-17 2008-05-28 中兴通讯股份有限公司 基于决策树的游戏作弊检测方法
CN102158367A (zh) * 2010-12-17 2011-08-17 中国科学技术大学苏州研究院 主动反外挂的网络游戏系统及网络游戏系统反外挂方法
CN103166806A (zh) * 2011-12-14 2013-06-19 腾讯科技(深圳)有限公司 第三方应用的外挂程序检测方法和系统
CN102902915A (zh) * 2012-09-29 2013-01-30 北京奇虎科技有限公司 对文件行为特征进行检测的系统
CN104252592A (zh) * 2013-06-27 2014-12-31 贝壳网际(北京)安全技术有限公司 外挂应用程序的识别方法及装置
CN104134044A (zh) * 2013-07-29 2014-11-05 腾讯科技(深圳)有限公司 一种数据安全性的检测方法、装置和系统

Also Published As

Publication number Publication date
CN105233499A (zh) 2016-01-13

Similar Documents

Publication Publication Date Title
CN105233499B (zh) 一种游戏代码校验的方法及游戏客户端、系统
Wang et al. An empirical study of android test generation tools in industrial cases
US10628294B2 (en) Mock services for software infrastructures
US8307439B2 (en) Add-in card based cheat detection platform for online applications
US6565443B1 (en) System and method for verifying the contents of a mass storage device before granting access to computer readable data stored on the device
US9606905B2 (en) Systems, methods, and media for testing software patches
US8561178B2 (en) Chipset based cheat detection platform for online applications
CN1744525A (zh) 一种防止在网络游戏中使用外挂的方法
US10943008B2 (en) System and method of detecting hidden behavior of a browser extension
CN109499069B (zh) 操作结果校验方法、装置、存储介质及电子装置
US20130297978A1 (en) Method of system for detecting abnormal interleavings in concurrent programs
US20080182659A1 (en) In-play detection of altered game data
CN114266050A (zh) 一种跨平台恶意软件对抗样本生成方法及系统
US8407523B2 (en) Method for protecting software programs
US20220233954A1 (en) System and methods for generating a platform-agnostic game shortcut to launch a game for cloud gaming
CN113384897A (zh) 游戏客户端版本切换方法及设备
CN106557305B (zh) 一种自动回放Android程序的方法及系统
Dietrich et al. The primegame revolutions: A cloud-based collaborative environment for teaching introductory programming
CN111045946A (zh) 一种游戏测试的方法、装置及电子设备
Kaiser et al. Fides: Remote anomaly-based cheat detection using client emulation
US11120892B2 (en) Content testing during image production
KR102367570B1 (ko) 블록체인에서의 병렬적 블록 처리 방법, 이를 이용하는 블록체인 노드 및 프로그램
CN110515652B (zh) 代码摘要的生成方法、装置和存储介质
JP6412667B1 (ja) ゲームを提供するためのサーバ、方法、及びプログラム
CN109802866B (zh) 一种网卡sr-iov功能测试方法、装置、终端及存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information
CB02 Change of applicant information

Address after: 510655 Guangdong, Guangdong, Guangzhou City, Guangzhou City, Panyu District South Village, Huambo two road, No. 79, Huambo business district, Wanda Commercial Square North District B-1

Applicant after: Guangzhou Huaduo Network Technology Co., Ltd.

Address before: 510655, Guangzhou, Whampoa Avenue, No. 2, creative industrial park, building 3-08,

Applicant before: Guangzhou Huaduo Network Technology Co., Ltd.

EE01 Entry into force of recordation of patent licensing contract
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20160113

Assignee: GUANGZHOU HUYA INFORMATION TECHNOLOGY Co.,Ltd.

Assignor: Guangzhou Huaduo Network Technology Co., Ltd.

Contract record no.: 2018990000088

Denomination of invention: Game code checking method and game client side and system

License type: Common License

Record date: 20180413

GR01 Patent grant
GR01 Patent grant