CN109453522B - 游戏运行安全检测方法及装置、存储介质、电子设备 - Google Patents
游戏运行安全检测方法及装置、存储介质、电子设备 Download PDFInfo
- Publication number
- CN109453522B CN109453522B CN201811330571.6A CN201811330571A CN109453522B CN 109453522 B CN109453522 B CN 109453522B CN 201811330571 A CN201811330571 A CN 201811330571A CN 109453522 B CN109453522 B CN 109453522B
- Authority
- CN
- China
- Prior art keywords
- function
- game
- head code
- detection method
- program
- 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
Links
Images
Classifications
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/70—Game security or game management aspects
- A63F13/75—Enforcing rules, e.g. detecting foul play or generating lists of cheating players
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/54—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/50—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
- A63F2300/55—Details of game data or player data management
- A63F2300/5586—Details of game data or player data management for enforcing rights or rules, e.g. to prevent foul play
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Business, Economics & Management (AREA)
- General Business, Economics & Management (AREA)
- Storage Device Security (AREA)
Abstract
本发明涉及一种游戏运行安全检测方法及装置、存储介质、电子设备。本发明所述的一种游戏运行安全检测方法包括如下步骤:获取游戏程序的函数编译时生成的头部代码;根据该函数编译时生成的头部代码,在该函数尾部增加函数头部代码判断指令;获取该函数执行时的头部代码;在该函数执行返回指令前,根据所述函数头部代码判断指令判断该函数执行时的头部代码与编译时生成的头部代码是否相同;如果该函数执行时的头部代码与编译时生成的头部代码不同,则结束执行该函数。本发明所述的一种游戏运行安全检测方法能有效的检测游戏程序是否被注入,防止函数被hook篡改。
Description
技术领域
本发明涉及游戏安全领域,特别是涉及一种游戏运行安全检测方法及装置、存储介质、电子设备。
背景技术
游戏外挂自游戏出现就屡禁不止,其一方面破坏游戏世界的公平性,另一方面也侵害了游戏厂商和玩家的利益,缩短游戏的寿命,侵犯游戏运营商的知识产权。随着近年来智能移动终端业务的崛起,手游逐渐占领了半壁江山,而移动端外挂也越来越多。相对于普通辅助版外挂的不同,注入类游戏外挂本质上非法修改了游戏执行逻辑或者内存数据,是一个非法侵害的存在,其对于游戏公平性的破坏尤为严重。如何有效的检测游戏客户端是否被注入,对于判断用户是否使用外挂,降低外挂对于游戏的侵害具有重要作用。
发明内容
基于此,本发明的目的在于,提供一种游戏运行安全检测方法,其能够有效的检测游戏客户端的函数是否被注入。
本发明是通过如下方案实施的:
一种游戏运行安全检测方法,包括如下步骤:
获取游戏程序的函数编译时生成的头部代码;
根据该函数编译时生成的头部代码,在该函数尾部增加函数头部代码判断指令;
获取该函数执行时的头部代码;
在该函数执行返回指令前,根据所述函数头部代码判断指令判断该函数执行时的头部代码与编译时生成的头部代码是否相同;
如果该函数执行时的头部代码与编译时生成的头部代码不同,则结束执行该函数。
本发明所述的游戏运行安全检测方法,通过在函数的汇编代码的尾部增加头部代码判断指令,在函数执行完毕执行返回指令前,判断当前函数的头部代码与游戏程序编译时生成的函数头部代码是否相同,如果不同,则表明当前函数的头部代码被篡改,本发明能有效的检测游戏程序是否被注入,防止函数被hook篡改。
在一种实施例中,所述头部代码包括该函数的前两条汇编代码或包括该函数的前四条汇编代码。
由于函数被hook篡改时,通常是被篡改头部指令代码,因此,仅检测函数的前两条或前四条汇编代码,有利于提高函数的执行效率。
在一种实施例中,还包括如下步骤:
获取游戏的配置参数;
获取该配置参数的数值范围;
如果该配置参数的数值超过该数值范围,则退出游戏和/或将该配置参数发送至服务器。
通过对游戏参数的数值范围进行监测和判断,可以避免因外挂修改参数导致一些不合理功能的出现。
在一种实施例中,所述配置参数包括游戏中物体的渲染参数和/或人物角色配置参数和/或战斗伤害计算参数。
通过监测和判断上述重要配置参数,可以进一步确保避免因外挂修改参数导致一些不合理功能的出现。
在一种实施例中,在游戏启动时,还包括如下步骤:
检测启动游戏的进程是否安全;
对游戏客户端包进行哈希校验;
如果启动游戏的进程不安全或对游戏客户端包进行的哈希校验不通过,则停止启动所述游戏程序或将该检测或校验信息发送至服务器。
通过上述步骤可以确保游戏的安全运行环境以及防止游戏客户端包被篡改。
在一种实施例中,在游戏运行时,还包括如下步骤:
创建游戏安全检测线程或进程;
在安全检测的线程或进程中,对包括逻辑判定点的程序进行哈希校验;
如果对包括逻辑判定点的程序进行的哈希校验不通过,则退出游戏和/或将该校验信息发送至服务器。
可以在游戏运行过程中,且不影响游戏正常运行的情况下,实时检测包括逻辑判定点的游戏程序内存是否被篡改。
在一种实施例中,在游戏运行时,还包括如下步骤:
获取游戏客户端正常加载时的库列表;
获取游戏客户端目前运行加载的库列表;
如果游戏客户端目前运行加载的库列表中包含不存在正常加载时的库列表中的库,则退出游戏和/或将该库发送至服务器。
可有效检测游戏运行时的加载库是否被修改。
进一步地,本发明还提供一种游戏运行安全检测装置,包括:
第一函数头部代码获取模块,用于获取游戏程序函数编译时生成的头部代码;
函数头部代码判断指令增加模块,用于根据该函数编译时生成的头部代码,在该函数尾部增加函数头部代码判断指令;
第二函数头部代码获取模块,用于获取该函数执行时的头部代码;
第一判断模块,用于在该函数执行返回指令前,根据所述函数头部代码判断指令判断该函数执行时的头部代码与编译时生成的头部代码是否相同;
第一退出模块,用于如果该函数执行时的头部代码与编译时生成的头部代码不同,结束执行该函数。
本发明所述的游戏运行安全检测装置,通过在函数的汇编代码的尾部增加头部代码判断指令,在函数执行完毕执行返回指令前,判断当前函数的头部代码与游戏程序编译时生成的函数头部代码是否相同,如果不同,则表明当前函数的头部代码被篡改,本发明能有效的检测游戏程序是否被注入,防止函数被hook篡改。
进一步地,本发明还提供一种。计算机可读介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述实施例中任意一项所述的游戏运行安全检测方法。
进一步地,本发明还提供一种电子设备,包括存储器、处理器以及储存在所述存储器并可被所述处理器执行的计算机程序,所述处理器执行所述计算机程序时,实现上述实施例中任意一项所述的游戏运行安全检测方法。
为了更好地理解和实施,下面结合附图详细说明本发明。
附图说明
图1为一种实施例中游戏运行安全检测方法的流程框图;
图2为一种实施例中游戏运行安全检测方法检测配置参数的流程框图;
图3为一种实施例中游戏运行安全检测方法在游戏启动时的流程框图;
图4为一种实施例中游戏运行安全检测方法检测内存的流程框图;
图5为一种实施例中游戏运行安全检测方法检测加载库的流程框图;
图6为一种实施例中游戏运行安全检测方法的流程框图;
图7为一种实施例中游戏运行安全检测装置的结构示意图;
图8为一种实施例中电子设备的结构示意图。
具体实施方式
请参阅图1,在一种实施例中,本发明游戏运行安全检测方法包括如下步骤:
步骤S101:获取游戏程序函数编译时生成的头部代码。
本实施例中的游戏程序主要包括手游的游戏程序,所述编译是游戏程序从源代码(通常为高级语言)到能直接被计算机或虚拟机执行的目标代码(通常为低级语言或机器语言)的翻译过程,所述游戏程序由多个函数构成,所述游戏程序执行时,即为执行构成游戏程序的多个函数。所述函数头部代码为函数被编译时生成的前几条代码。
步骤S102:根据该函数编译时生成的头部代码,在该函数尾部增加函数头部代码判断指令。
在本实施例中,通过修改编译器架构的后端,例如修改LLVM编译器架构的后端,实现在函数汇编结构末端加入函数头部代码判断指令,所述函数尾部的位置位于函数的代码中其他指令代码之后,返回指令代码前的位置,增加函数头部代码判断指令,可以是在函数的尾部增加异或指令或比较指令,异或指令或比较指令的对象为所获取的游戏程序编译时生成的函数头部代码。
步骤S103:获取该函数执行时的头部代码。
函数执行时,通常为用户在安装所述游戏程序时,或用户在启动所述游戏程序时。
步骤S104:在该函数执行返回指令前,根据所述函数头部代码判断指令判断该函数执行时的头部代码与编译时生成的头部代码是否相同。
在函数执行至函数尾部时,执行所述函数头部代码判断指令,对游戏程序编译时生成的函数头部代码和执行时的函数头部代码进行比较或异或判断,判断该函数执行时的函数头部代码与编译时生成的函数头部代码是否相同。
步骤S105:如果该函数执行时的头部代码与编译时生成的头部代码不同,则结束执行该函数。
如果该函数执行时的函数头部代码与编译时生成的函数头部代码不同,则表明该函数的头部代码被篡改,则直接结束该函数的执行,同时不执行该函数的返回指令,使游戏程序不能正常运行。
本发明所述的游戏运行安全检测方法,通过在函数的汇编代码的尾部增加头部代码判断指令,在函数执行完毕执行返回指令前,判断当前函数的头部代码与游戏程序编译时生成的函数头部代码是否相同,如果不同,则表明当前函数的头部代码被篡改,本发明能有效的检测游戏程序是否被注入,防止函数被hook篡改。
在一种实施例中,所述头部代码包括该函数的前两条汇编代码或包括该函数的前四条汇编代码。
目前常用的inline hook方法都是通过篡改原函数头部文件进行注入,因此,为提高函数执行效率,本实施例中的函数的头部代码为十六进制,且仅包括函数的前两条或前四条代码。例如,在32位arm处理器中执行编译时,32位arm处理器中一条ARM指令代码为4个字节,则如果头部代码为该函数的前两条汇编代码时,该函数的头部代码为8个字节,;如果头部代码为该函数的前四条汇编代码时,该函数的头部代码为16个字节。
为避免函数过于臃肿,在一种实施例中,仅在游戏程序的部分函数中增加函数头部代码判断指令。
请参阅图2,在一种实施例中,本发明的游戏运行安全检测方法还包括对游戏的配置参数进行校验,具体包括如下步骤:
步骤S201:获取游戏的配置参数。
所述游戏的配置参数,在本实施例中,主要包括一些游戏中比较关键或重要的配置参数,例如游戏中物体的渲染参数,修改这些配置参数可实现一些特殊功能,如在某些吃鸡游戏中,修改植被的渲染距离,可实现除草透视的功能;例如人物角色配置参数,角色身体长度、颜色等,修改后可让敌人变得容易被发现;以及其它战斗伤害计算、速度配置、枪械后坐力等数据,修改后可实现加速、无敌、无后坐力等。一些外挂程序可以通过修改人物速度,实现瞬移等功能。
步骤S202:获取该配置参数的数值范围。
配置参数的数值范围为系统预设值,可以保存在游戏客户端或服务器端,将当前的游戏配置参数与该配置参数的数值范围进行对比,判断该配置参数是否在合理的数值范围,可以是在游戏客户端进行对比,也可以是将该参数上传至服务器进行对比,其中,该对比是在游戏运行过程中,动态实时的对比。
步骤S203:如果该配置参数的数值超过该数值范围,则退出游戏和/或将该配置参数发送至服务器。
如果经过对比,判断该配置参数超出系统预设值的合理范围,则退出游戏,和/或将该参数发送至服务器,待服务器作进一步判定或处理。
在本实施例中,使用混淆工具编译用于对比配置参数与该配置参数的系统预设数值范围的检测代码,编译完成后,生成静态库,并将所生成的静态库插入多出游戏逻辑主代码中,实现多处调用,多处检测。
请参阅图3,在一种实施例中,在游戏程序启动时,还执行如下步骤:
步骤S301:检测启动游戏的进程是否安全。
在本实施例中,检测启动游戏的进程,主要包括检测游戏所运行的移动终端运行环境,例如手机或平板等客户端的运行环境是否安全,如果该客户端设备是苹果公司的ios操作系统,则可以是判断该设备是否越狱,如果该设备已越狱,则该客户端运行环境被判断为不安全,如果是安卓系统,则可以是判断该设备的zygote进程是否被注入,如果被注入,则该客户端运行环境也被判断为不安全,如果检测结果为运行环境不安全,则游戏程序停止启动,或将不安全信息发送至服务器。
步骤S302:对游戏客户端包进行哈希校验;
步骤S303:如果启动游戏的进程不安全或对游戏客户端包进行的哈希校验不通过,则停止启动所述游戏程序或将该检测或校验信息发送至服务器。
对游戏客户端包进行哈希校验的目的在于,校验该游戏客户端包的完整性,检测其是否被修改或被替换,具体包括:计算游戏客户端的MD5值,并与原始游戏客户端的MD5值进行比较,如果MD5值不同,则说明该游戏客户端被修改或替换,则游戏程序停止启动,和/或将该信息发送至服务器,其中,比较MD5值可以是在游戏客户端进行,也可以是将游戏客户端的MD5值发送至服务器,在服务器端进行比较。
请参阅图4,在一种实施例中,在游戏程序运行过程中,还对内存中的逻辑判定点进行校验,具体包括如下步骤:
步骤S401:创建游戏安全检测线程或进程。
步骤S402:在安全检测的线程或进程中,对包括逻辑判定点的程序进行哈希校验。
步骤S403:如果对包括逻辑判定点的程序进行的哈希校验不通过,则退出游戏和/或将该校验信息发送至服务器。
使用fork函数创建出多个安全检测线程,并随机对进程中包括逻辑判定点,尤其是关键逻辑判定点的程序进行哈希校验,并将哈希值发送至服务器。
其中,为了防止校验程序被逆向或过掉,用于进行哈希校验的代码使用混淆编译工具编译,并分布于游戏主逻辑代码中的多处。
在本实施例中,逻辑判定点包括打怪时的伤害计算函数,恶意程序注入修改此函数将成倍增加伤害值或者游戏角色无敌状态等;以及游戏角色、物体渲染逻辑,如果被恶意修改可以达到透视外挂行为;以及游戏结果上报逻辑,如果被恶意修改可实现跳过战斗直接加经验等。
在本实施例中,如果逻辑判定点的程序哈希校验没有通过,则游戏程序自动退出,和/或该信息发送至服务器。
请参阅图5,在一种实施例中,在游戏程序运行过程中,还对游戏程序加载的库进行校验,具体包括如下步骤:
步骤S501:获取游戏客户端正常加载时的库列表。
步骤S502:获取游戏客户端目前运行加载的库列表。
步骤S503:如果游戏客户端目前运行加载的库列表中包含不存在正常加载时的库列表中的库,则退出游戏和/或将该库发送至服务器。
其中,正常加载时的库包括动态库和静态库,游戏客户端正常加载时的库列表为系统预设值,列表可以是通过建立白名单的形式建立,通过对比游戏客户端正常加载时的库列表和游戏客户端目前运行加载的库列表,可以判断出目前游戏客户端是否加载有非法的库,如果有,则说明游戏进程被非法注入,则自动退出游戏和/或将该非法库发送至服务器做进一步判断或处理。
在本实施例中,对比游戏客户端正常加载时的库列表和游戏客户端目前运行加载的库列表,可以是通过将目前运行加载的库列表发送至服务器,在服务器端进行,也可以是在游戏客户端设备上进行。
在本发明的上述实施例中,游戏程序的检测代码,或主逻辑代码都可以是使用混淆工具编译而成,从而防止被逆向屏蔽。
请参阅图6,在一个具体的实施例中,游戏运行安全检测方法包括如下步骤:
步骤S601:判断游戏程序中,函数执行时的头部代码与编译时生成的头部代码是否相同,如果是,则继续执行该函数,如果不是,则结束执行该函数。
步骤S602:检测启动游戏的进程是否安全,对游戏客户端包进行哈希校验,如果检测和校验成功,则执行步骤S602,如果检测或校验失败,则停止启动游戏程序或将失败信息发送至服务器。
步骤S603:对内存进行哈希校验,循环不定时检测程序逻辑区是否被篡改,如果是,则退出游戏程序或将信息发送至服务器。
步骤S604:动态循环检测客户端加载库列表,判断是否有非法库,如果有,则退出游戏程序或将信息发送至服务器。
步骤S605:对游戏的配置参数进行动态循环检测,如果游戏参数超过数值范围,则退出游戏程序或将信息发送至服务器。
本发明所述的游戏运行安全检测方法,通过在函数的汇编代码的尾部增加头部代码判断指令,在函数执行完毕执行返回指令前,判断当前函数的头部代码与游戏程序编译时生成的函数头部代码是否相同,如果不同,则表明当前函数的头部代码被篡改,本发明能有效的检测游戏程序是否被注入,防止函数被hook篡改;同时,在游戏配置参数的多处环节进行监视,确保配置参数在合理范围内,杜绝外挂修改参数达到一些不合理功能的出现;通过游戏程序启动时检测游戏的运行环境,以及检测游戏包的完整性,进一步提升了游戏的安全性;通过内存动态校验和对加载库的校验,能及时发现游戏程序是否被注入。
请参阅图7,在一种实施例中,本发明所述的游戏运行安全检测装置700包括:
第一函数头部代码获取模块701,用于获取游戏程序函数编译时生成的头部代码。
函数头部代码判断指令增加模块702,用于根据该函数编译时生成的头部代码,在该函数尾部增加函数头部代码判断指令。
第二函数头部代码获取模块703,用于获取该函数执行时的头部代码。
判断模块704,用于在该函数执行返回指令前,根据所述函数头部代码判断指令判断该函数执行时的头部代码与编译时生成的头部代码是否相同。
第一退出模块705,用于如果该函数执行时的头部代码与编译时生成的头部代码不同,结束执行该函数。
在一种实施例中,还包括:
配置参数获取模块706,用于获取游戏的配置参数。
数值范围获取模块707,用于获取该配置参数的数值范围。
第二退出模块708,用于如果该配置参数的数值超过该数值范围,退出游戏和/或将该配置参数发送至服务器。
在一种实施例中,还包括:
启动进程检测模块709,用于检测启动游戏的进程是否安全。
客户端包校验模块710,用于对游戏客户端包进行哈希校验。
第三退出模块711,用于如果启动游戏的进程不安全或对游戏客户端包进行的哈希校验不通过,则停止启动所述游戏程序或将该检测或校验信息发送至服务器。
在一种实施例中,还包括:
安全检测线程创建模块712,用于创建安全检测线程或进程。
内存校验模块713,用于在创建的安全检测线程或进程中,对包括逻辑判定点的程序进行哈希校验。
第四退出模块714,用于如果对包括逻辑判定点的程序进行的哈希校验不通过,则退出游戏和/或将该校验信息发送至服务器。
在一种实施例中,还包括:
第一加载库获取模块715,用于获取游戏客户端正常加载时的库列表。
第二加载库获取模块716,用于获取游戏客户端目前运行加载的库列表。
第五退出模块717,用于如果游戏客户端目前运行加载的库列表中包含不存在正常加载时的库列表中的库,退出游戏和/或将该库发送至服务器。
本发明所述的游戏运行安全检测装置,通过在函数的汇编代码的尾部增加头部代码判断指令,在函数执行完毕执行返回指令前,判断当前函数的头部代码与游戏程序编译时生成的函数头部代码是否相同,如果不同,则表明当前函数的头部代码被篡改,本发明能有效的检测游戏程序是否被注入,防止函数被hook篡改;同时,在游戏配置参数的多处环节进行监视,确保配置参数在合理范围内,杜绝外挂修改参数达到一些不合理功能的出现;通过游戏程序启动时检测游戏的运行环境,以及检测游戏包的完整性,进一步提升了游戏的安全性;通过内存动态校验和对加载库的校验,能及时发现游戏程序是否被注入。
本发明还提供一种计算机可读介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述任意一项实施例中的游戏运行安全检测方法。
请参阅图8,在一种实施例中,本发明的电子设备800包括存储器801和处理器802,以及储存在所述存储器801并可被所述处理器802执行的计算机程序,所述处理器802执行所述计算机程序时,实现如上述任意一项实施例中的游戏运行安全检测方法。
在本实施例中,控制器802可以是一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件。存储介质801可采用在一个或多个其中包含有程序代码的存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。计算机可读储存介质包括永久性和非永久性、可移动和非可移动媒体,可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括但不限于:相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。
Claims (9)
1.一种游戏运行安全检测方法,其特征在于,包括如下步骤:
获取游戏程序函数编译时生成的头部代码,其中,所述头部代码包括该函数的前两条汇编代码或包括该函数的前四条汇编代码;
根据该函数编译时生成的头部代码,在该函数尾部增加函数头部代码判断指令;
获取该函数执行时的头部代码;
在该函数执行返回指令前,根据所述函数头部代码判断指令,对游戏程序编译时生成的函数头部代码和执行时的函数头部代码进行比较或异或判断,判断该函数执行时的头部代码与编译时生成的头部代码是否相同;
如果该函数执行时的头部代码与编译时生成的头部代码不同,则结束执行该函数。
2.根据权利要求1所述的游戏运行安全检测方法,其特征在于,还包括如下步骤:
获取游戏的配置参数,其中,所述配置参数包括渲染参数以及人物角色配置参数;
获取该配置参数的数值范围,其中,所述配置参数的数值范围为系统预设值;
如果该配置参数的数值超过该数值范围,则退出游戏和/或将该配置参数发送至服务器。
3.根据权利要求2所述的游戏运行安全检测方法,其特征在于:
所述配置参数包括游戏中物体的渲染参数和/或人物角色配置参数和/或战斗伤害计算参数。
4.根据权利要求1所述的游戏运行安全检测方法,其特征在于,在游戏启动时,还包括如下步骤:
检测启动游戏的进程是否安全;
对游戏客户端包进行哈希校验;
如果启动游戏的进程不安全或对游戏客户端包进行的哈希校验不通过,则停止启动所述游戏程序或将该检测或校验信息发送至服务器。
5.根据权利要求1所述的游戏运行安全检测方法,其特征在于,在游戏运行时,还包括如下步骤:
创建游戏安全检测线程或进程;
在安全检测的进程或线程中,对包括逻辑判定点的程序进行哈希校验;
如果对包括逻辑判定点的程序进行的哈希校验不通过,则退出游戏和/或将该校验信息发送至服务器。
6.根据权利要求1所述的游戏运行安全检测方法,其特征在于,在游戏运行时,还包括如下步骤:
获取游戏客户端正常加载时的库列表;
获取游戏客户端目前运行加载的库列表;
如果游戏客户端目前运行加载的库列表中包含不存在正常加载时的库列表中的库,则退出游戏和/或将该库发送至服务器。
7.一种游戏运行安全检测装置,其特征在于,包括:
第一函数头部代码获取模块,用于获取游戏程序函数编译时生成的头部代码;
函数头部代码判断指令增加模块,用于根据该函数编译时生成的头部代码,在该函数尾部增加函数头部代码判断指令;
第二函数头部代码获取模块,用于获取该函数执行时的头部代码;
第一判断模块,用于在该函数执行返回指令前,根据所述函数头部代码判断指令,对游戏程序编译时生成的函数头部代码和执行时的函数头部代码进行比较或异或判断,判断该函数执行时的头部代码与编译时生成的头部代码是否相同;
第一退出模块,用于如果该函数执行时的头部代码与编译时生成的头部代码不同,结束执行该函数。
8.一种计算机可读介质,其上存储有计算机程序,其特征在于:
该计算机程序被处理器执行时实现如权利要求1至6任意一项所述的游戏运行安全检测方法。
9.一种电子设备,包括存储器、处理器以及储存在所述存储器并可被所述处理器执行的计算机程序,其特征在于:
所述处理器执行所述计算机程序时,实现如权利要求1至6任意一项所述的游戏运行安全检测方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811330571.6A CN109453522B (zh) | 2018-11-09 | 2018-11-09 | 游戏运行安全检测方法及装置、存储介质、电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811330571.6A CN109453522B (zh) | 2018-11-09 | 2018-11-09 | 游戏运行安全检测方法及装置、存储介质、电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109453522A CN109453522A (zh) | 2019-03-12 |
CN109453522B true CN109453522B (zh) | 2022-06-14 |
Family
ID=65609909
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811330571.6A Active CN109453522B (zh) | 2018-11-09 | 2018-11-09 | 游戏运行安全检测方法及装置、存储介质、电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109453522B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110090445B (zh) * | 2019-05-10 | 2023-04-07 | 深圳市腾讯网域计算机网络有限公司 | 一种外挂检测方法、客户端及服务器 |
CN112668004B (zh) * | 2019-10-16 | 2022-06-21 | 武汉斗鱼网络科技有限公司 | 一种基于llvm的函数校验方法及相关装置 |
CN111821693B (zh) * | 2020-07-24 | 2024-09-10 | 网易(杭州)网络有限公司 | 游戏的透视外挂检测方法、装置、设备及存储介质 |
CN114115884B (zh) * | 2020-08-26 | 2024-06-25 | 腾讯科技(深圳)有限公司 | 一种编程服务的管理方法以及相关装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105233499A (zh) * | 2015-09-25 | 2016-01-13 | 广州华多网络科技有限公司 | 一种游戏代码校验的方法及游戏客户端、系统 |
CN106778269A (zh) * | 2016-12-01 | 2017-05-31 | 腾讯科技(深圳)有限公司 | 一种驱动层防注入方法、装置及客户端 |
CN106845223A (zh) * | 2016-12-13 | 2017-06-13 | 北京三快在线科技有限公司 | 用于检测恶意代码的方法和装置 |
CN108111464A (zh) * | 2016-11-24 | 2018-06-01 | 腾讯科技(深圳)有限公司 | 一种数据校验方法及装置 |
CN108199827A (zh) * | 2018-01-09 | 2018-06-22 | 武汉斗鱼网络科技有限公司 | 客户端代码完整性校验方法、存储介质、电子设备及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8997218B2 (en) * | 2010-12-22 | 2015-03-31 | F-Secure Corporation | Detecting a return-oriented programming exploit |
-
2018
- 2018-11-09 CN CN201811330571.6A patent/CN109453522B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105233499A (zh) * | 2015-09-25 | 2016-01-13 | 广州华多网络科技有限公司 | 一种游戏代码校验的方法及游戏客户端、系统 |
CN108111464A (zh) * | 2016-11-24 | 2018-06-01 | 腾讯科技(深圳)有限公司 | 一种数据校验方法及装置 |
CN106778269A (zh) * | 2016-12-01 | 2017-05-31 | 腾讯科技(深圳)有限公司 | 一种驱动层防注入方法、装置及客户端 |
CN106845223A (zh) * | 2016-12-13 | 2017-06-13 | 北京三快在线科技有限公司 | 用于检测恶意代码的方法和装置 |
CN108199827A (zh) * | 2018-01-09 | 2018-06-22 | 武汉斗鱼网络科技有限公司 | 客户端代码完整性校验方法、存储介质、电子设备及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN109453522A (zh) | 2019-03-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109453522B (zh) | 游戏运行安全检测方法及装置、存储介质、电子设备 | |
CN109871691B (zh) | 基于权限的进程管理方法、系统、设备及可读存储介质 | |
KR100368947B1 (ko) | 실행 모듈 및 이에 연관된 보호 서비스 제공자 모듈의 무결성 검사 | |
CN107330320B (zh) | 应用进程监控的方法和装置 | |
KR101503785B1 (ko) | 동적 라이브러리를 보호하는 방법 및 장치 | |
CN106778104B (zh) | 一种应用程序的反调试方法和系统 | |
CN104751048B (zh) | 一种预链接机制下的动态链接库完整性度量方法 | |
EP2262259A1 (en) | Method for monitoring execution of data processing program instructions in a security module | |
CN104520872A (zh) | 在低功率状态期间保护存储器区的方法和装置 | |
CN111389012B (zh) | 一种用于反外挂的方法、装置和系统 | |
CN111191243B (zh) | 一种漏洞检测方法、装置和存储介质 | |
CN111400723A (zh) | 基于tee扩展的操作系统内核强制访问控制方法及系统 | |
CN105512548A (zh) | 基于隐藏可执行镜像并注入dll保护镜像代码的方法 | |
US9047448B2 (en) | Branch auditing in a computer program | |
CN104217139A (zh) | 处理系统 | |
CN104361285A (zh) | 移动设备应用程序的安全检测方法及装置 | |
CN113946825B (zh) | 一种内存马处理方法及系统 | |
CN116502220B (zh) | 一种对抗性Java内存马的检测方法及处理方法 | |
CN101599113A (zh) | 驱动型恶意软件防御方法和装置 | |
CN107341085B (zh) | 一种控制装置 | |
CN114371859A (zh) | 应用软件rasp程序更新方法、服务器、电子设备及存储介质 | |
KR101557455B1 (ko) | 응용 프로그램 코드 분석 장치 및 그것을 이용한 코드 분석 방법 | |
CN104063288A (zh) | 进程管理方法及装置 | |
CN108073411A (zh) | 一种补丁的内核加载方法及装置 | |
US20090307536A1 (en) | Method for protecting software programs |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
PE01 | Entry into force of the registration of the contract for pledge of patent right | ||
PE01 | Entry into force of the registration of the contract for pledge of patent right |
Denomination of invention: Game operation security detection methods and devices, storage media, and electronic devices Effective date of registration: 20230630 Granted publication date: 20220614 Pledgee: CITIC Bank Co.,Ltd. Guangzhou Branch Pledgor: FLAMINGO NETWORK (GUANGZHOU) CO.,LTD. Registration number: Y2023980046951 |