CN109635567B - 针对应用客户端的校验方法、装置及服务器平台 - Google Patents

针对应用客户端的校验方法、装置及服务器平台 Download PDF

Info

Publication number
CN109635567B
CN109635567B CN201910086890.5A CN201910086890A CN109635567B CN 109635567 B CN109635567 B CN 109635567B CN 201910086890 A CN201910086890 A CN 201910086890A CN 109635567 B CN109635567 B CN 109635567B
Authority
CN
China
Prior art keywords
slice
slices
sub
application client
abnormal
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
CN201910086890.5A
Other languages
English (en)
Other versions
CN109635567A (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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201910086890.5A priority Critical patent/CN109635567B/zh
Publication of CN109635567A publication Critical patent/CN109635567A/zh
Application granted granted Critical
Publication of CN109635567B publication Critical patent/CN109635567B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/563Static detection by source code analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Virology (AREA)
  • Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Information Transfer Between Computers (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请提供了一种针对应用客户端的校验方法、装置及服务器平台。该方法包括:接收到应用客户端启动运行后的登录请求时,下发对应的扫描配置信息,使得终端设备对应用客户端中被校验模块中各切片进行扫描,得到各切片的特征值并上传;根据获取得到的各种切片的基准特征值,对各切片的特征值进行校验;当存在异常切片时,根据获取得到的各种子切片的基准特征值,对异常切片的至少一级子切片进行校验,直到输出最后一级子异常切片的二进制代码片段的校验结果。本申请无需作弊软件样本就可校验,校验过程自动化,节省人工,可提升校验的有效性,对异常切片的至少一级子切片进行校验,相当于逐步缩小内存范围进行校验,大大提升了校验的效率和精度。

Description

针对应用客户端的校验方法、装置及服务器平台
技术领域
本申请涉及软件安全技术领域,具体而言,本申请涉及一种针对应用客户端的校验方法、装置及服务器平台。
背景技术
应用客户端包括代码段和数据段。终端设备将应用客户端加载到内存中后,在应用客户端运行过程中,内存中代码段的二进制数据保持不变,但应用客户端自身会不断的修改内存中数据段的二进制数据。通过篡改应用客户端在内存中的代码段,来改变应用执行逻辑,是作弊软件实现恶意功能的常用方式之一。
目前存在两种针对应用客户端的校验方法,对应用客户端在内存中的二进制数据进行校验,以发现作弊软件。
一种现有的针对应用客户端的校验方法包括:终端设备对于应用客户端中被校验的PE(Portable Executable,可移植的可执行的)文件,将被校验的PE文件加载到内存中,并修复重定位等信息,将该PE文件的内存代码段作为对比参照物;将该对比参照物与应用客户端真实运行时该PE文件的内存代码段进行对比,若比对结果不一致,表示应用客户端的内存代码已被作弊软件篡改。然而,本申请的发明人发现,这种校验方法存在容易校验失效或容易被作弊软件规避的缺陷。
另一种现有的针对应用客户端的校验方法包括:基于已知的作弊软件样本,通过dump(对程序在内存中的执行状态信息进行保存备份,简称备份)使用作弊软件前后的应用客户端的内存代码段,并进行人工对比,发现作弊软件篡改应用客户端的内存代码段的位置,然后服务器下发点对点的内存代码的检验范围至终端设备,从而由终端设备判断应用客户端的内存代码段是否被作弊软件篡改。然而,本申请的发明人发现,这种校验方法存在过于依赖作弊软件样本或依赖于人工分析的缺陷。
综上,现有的针对应用客户端的校验方法存在容易校验失效、容易被作弊软件规避、必须依赖于作弊软件样本、或者依赖于人工分析的缺陷。
发明内容
本申请提供了一种针对应用客户端的校验方法、装置及服务器平台,可以解决容易校验失效、容易被作弊软件规避、依赖于作弊软件样本、或者依赖于人工分析的问题。技术方案如下:
第一方面,本申请实施例提供了一种针对应用客户端的校验方法,包括:
接收到终端设备中应用客户端启动运行后的登录请求时,下发对应的扫描配置信息,使得终端设备根据扫描配置信息,对应用客户端中被校验模块中的各切片进行扫描,得到各切片的特征值并上传;
根据获取得到的各种切片的基准特征值,对各切片的特征值进行校验;
当根据校验结果确定出存在异常切片时,根据获取得到的各种子切片的基准特征值,对异常切片的至少一级子切片进行校验,直到达到扫描配置信息中的切片级数,对最后一级子异常切片的二进制代码片段进行校验;
输出二进制代码片段的校验结果。
可选地,各种切片和子切片的基准特征值是通过下述方法预先获取得到的:
针对多个终端设备中运行内存的应用客户端,下发对应的扫描配置信息和随机扫描指令,扫描配置信息包括应用客户端的被校验模块的信息、扫描范围和各级别的切片尺寸,使得每个终端设备针对每个级别的切片尺寸,将被校验模块划分成多个该级别的切片或子切片,并将多个该级别的切片或子切片设置为循环列表,对循环列表中该级别的各切片或子切片进行随机扫描,得到该级别各切片或子切片的特征值并上传;
对于每个级别的每种切片,将出现次数占比高于出现次数占比阈值的特征值,确定为该级别该种切片的基准特征值。
可选地,下发对应的扫描配置信息,使得终端设备根据扫描配置信息,对应用客户端中被校验模块中的各切片进行扫描,得到各切片的特征值并上传,包括:
针对终端设备的内存中运行的应用客户端,下发对应的扫描配置信息,使得终端设备根据扫描配置信息中的应用客户端的被校验模块的信息、扫描范围和一级切片尺寸,将被校验模块划分成多个切片并将多个切片设置为循环列表,上传初始化完成消息;
接收到初始化完成消息后,确认是否存在高危切片;若存在高危切片,则下发高危切片的标识,使得终端设备根据高危切片的标识,对循环列表中的高危切片进行扫描后,对循环列表中的其它切片进行扫描,得到各切片的特征值并上传。
可选地,高危切片是通过下述方法预先获取得到的:
对于多个终端设备中运行的应用客户端,针对该应用客户端中被校验模块中每种切片,将每个终端设备的该切片的特征值,与该种切片的基准特征值进行比较;
将特征值与基准特征值不一致的切片,确定为该种切片的异常切片;
将异常切片出现次数超过异常切片阈值出现次数的每种切片,确定为高危切片。
可选地,本申请实施例针对应用客户端的校验方法,还包括:若不存在高危切片,则下发随机扫描指令,使得终端设备根据随机扫描指令,对循环列表中的各切片进行随机扫描,得到各切片的特征值并上传。
可选地,对异常切片的至少一级子切片进行校验,直到达到扫描配置信息中的切片级数,对最后一级子异常切片的二进制代码片段进行校验,包括:
下发异常切片的标识,使得终端设备根据异常切片的标识和扫描配置信息中的二级切片尺寸,将该异常切片划分成多个一级子切片,对多个一级子切片进行扫描,得到各一级子切片的特征值上传;当切片级数为二级时,一级子切片即为最后一级子切片;
将接收的每个一级子切片的特征值,与对应的基准特征值进行对比;根据对比结果,确定出一级异常子切片,下发一级异常子切片的二进制代码片段的获取指令;使得终端设备根据获取指令,上传一级异常子切片的二进制代码片段;
对二进制代码片段进行校验。
可选地,本申请实施例针对应用客户端的校验方法,还包括:当应用客户端的版本更新、应用客户端的作弊软件的版本更新、或者达到预定时段时,对高危切片进行更新;预定时段的数量级为月、十天、天或小时。
可选地,本申请实施例针对应用客户端的校验方法,还包括:当应用客户端的版本更新、应用客户端的作弊软件的版本更新、或者达到预定时段时,对各种切片和子切片的基准特征值进行更新;预定时段的数量级为月、十天、天或小时。
可选地,本申请实施例针对应用客户端的校验方法,还包括下述至少一项:
应用客户端包括游戏客户端和即时通讯客户端中的一种;
被校验模块包括可移植的可执行的文件;
切片的特征值包括切片所属的被校验模块的信息和基址、切片的标识和切片的摘要值、以及二进制代码片段中的至少一种。
可选地,本申请实施例针对应用客户端的校验方法,还包括:
下发对应的扫描配置信息之前,当确定出应用客户端的标识记录在排除列表中时,确定该应用客户端为合法的第三方软件,结束校验;
或者,当根据校验结果确定出存在异常切片时,判断该异常切片是否属于合法的第三方软件的切片;若该异常切片属于合法的第三方软件的切片,则结束校验。
第二方面,提供了一种针对应用客户端的校验装置,包括:
信息收发模块,用于接收到终端设备中应用客户端启动运行后的登录请求时,下发对应的扫描配置信息,使得终端设备根据扫描配置信息,对应用客户端中被校验模块中的各切片进行扫描,得到各切片的特征值并上传;
校验模块,用于根据获取得到的各种切片的基准特征值,对各切片的特征值进行校验;当根据校验结果确定出存在异常切片时,根据获取得到的各种子切片的基准特征值,对异常切片的至少一级子切片进行校验,直到达到扫描配置信息中的切片级数,对最后一级子异常切片的二进制代码片段进行校验;
输出模块,用于输出二进制代码片段的校验结果。
可选地,本申请实施例中针对应用客户端的校验装置,还包括:聚集模块。
聚集模块,用于通过下述方法预先获取得到各种切片和子切片的基准特征值:针对多个终端设备中运行内存的应用客户端,下发对应的扫描配置信息和随机扫描指令,扫描配置信息包括应用客户端的被校验模块的信息、扫描范围和各级别的切片尺寸,使得每个终端设备针对每个级别的切片尺寸,将被校验模块划分成多个该级别的切片或子切片,并将多个该级别的切片或子切片设置为循环列表,对循环列表中该级别的各切片或子切片进行随机扫描,得到该级别各切片或子切片的特征值并上传;对于每个级别的每种切片,将出现次数占比高于出现次数占比阈值的特征值,确定为该级别该种切片的基准特征值。
可选地,信息收发模块,具体用于针对终端设备的内存中运行的应用客户端,下发对应的扫描配置信息,使得终端设备根据扫描配置信息中的应用客户端的被校验模块的信息、扫描范围和一级切片尺寸,将被校验模块划分成多个切片并将多个切片设置为循环列表,上传初始化完成消息;接收到初始化完成消息后,确认是否存在高危切片;若存在高危切片,则下发高危切片的标识,使得终端设备根据高危切片的标识,对循环列表中的高危切片进行扫描后,对循环列表中的其它切片进行扫描,得到各切片的特征值并上传。
可选地,聚集模块,还用于通过下述方法预先获取得到高危切片:对于多个终端设备中运行的应用客户端,针对该应用客户端中被校验模块中每种切片,将每个终端设备的该切片的特征值,与该种切片的基准特征值进行比较;将特征值与基准特征值不一致的切片,确定为该种切片的异常切片;将异常切片出现次数超过异常切片阈值出现次数的每种切片,确定为高危切片。
可选地,信息收发模块,还用于若不存在高危切片,则下发随机扫描指令,使得终端设备根据随机扫描指令,对循环列表中的各切片进行随机扫描,得到各切片的特征值并上传。
可选地,校验模块,具体用于下发异常切片的标识,使得终端设备根据异常切片的标识和扫描配置信息中的二级切片尺寸,将该异常切片划分成多个一级子切片,对多个一级子切片进行扫描,得到各一级子切片的特征值上传;当切片级数为二级时,一级子切片即为最后一级子切片;将接收的每个一级子切片的特征值,与对应的基准特征值进行对比;根据对比结果,确定出一级异常子切片,下发一级异常子切片的二进制代码片段的获取指令;使得终端设备根据获取指令,上传一级异常子切片的二进制代码片段;对二进制代码片段进行校验。
可选地,聚集模块,还用于当应用客户端的版本更新、应用客户端的作弊软件的版本更新、或者达到预定时段时,对高危切片进行更新;预定时段的数量级为月、十天、天或小时。
可选地,聚集模块,还用于当应用客户端的版本更新、应用客户端的作弊软件的版本更新、或者达到预定时段时,对各种切片和子切片的基准特征值进行更新;预定时段的数量级为月、十天、天或小时。
可选地,校验模块,还用于下发对应的扫描配置信息之前,当确定出应用客户端的标识记录在排除列表中时,确定该应用客户端为合法的第三方软件,结束校验;或者,当根据校验结果确定出存在异常切片时,判断该异常切片是否属于合法的第三方软件的切片;若该异常切片属于合法的第三方软件的切片,则结束校验。
第三方面,提供了一种服务器平台,其包括:
处理器、存储器和总线;
总线,用于连接处理器和存储器;
存储器,用于存储操作指令;
处理器,用于通过调用操作指令,执行如本申请的第一方面所示的针对应用客户端的校验方法。
第四方面,提供了一种计算机可读存储介质,存储介质存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现如第一方面所示的针对应用客户端的校验方法。
本申请实施例提供的技术方案带来的有益效果是:
本申请实施例中,通过聚集代替作弊软件样本,就可以得到各种切片和各种子切片的基准特征值,即无需作弊软件样本就可以实现针对应用客户端的校验,大大提升了主动发现作弊行为的性能;应用客户端的绝大部分校验过程实现了程序自动化,节省了大量的人工分析和比对,大大提升了校验速度和效率,降低了人工成本。
由于本申请实施例中是对已经启动运行后的应用客户端中的模块进行校验,即对加载到内存中的经过解壳、解密或解压缩等反安全保护处理的模块进行校验,避免了校验失效,大大提升了校验的有效性;而且,本实施例中,主要的校验步骤是在服务器平台执行,大大减低了校验被作弊软件规避的几率。
本申请实施例中,一旦发现异常切片,会对异常切片的至少一级子切片进行校验,相当于逐步缩小内存范围进行校验,大大提升了校验的效率和精度。有利于后续通过对最后一级子异常切片的二进制代码片段进行分析、确认具体被篡改了哪个函数、哪行代码,有利于推测作弊软件篡改此切片或子切片的目的及可能的作弊功能,有利于提升分析效率,可以提升可运营性。
可选地,本申请实施例中,利用循环列表,设定每个终端设备运行中的应用客户端中各切片的扫描起始切片,能够快速聚集统计到每个切片的争取的特征值,大大提升了聚集切片的特征值的速度和效率。
可选地,本申请实施例中,服务器平台在下发对应的扫描配置信息之前,还包括:当确定出应用客户端的标识记录在排除列表中时,确定该应用客户端为合法的第三方软件,结束校验;当服务器平台根据校验结果确定出存在异常切片时,判断该异常切片是否属于合法的第三方软件的切片;若该异常切片属于合法的第三方软件的切片,则结束校验。这样可以排除合法的第三方软件的hook行为,避免将合法的第三方软件误判为作弊软件,提升校验的可靠性。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍。
图1为本申请实施例提供的一种从大内存块中划分出切片的原理示意图;
图2为本申请实施例提供的PE文件加载到内存中的原理示意图;
图3为本申请实施例提供的一种针对应用客户端的校验系统的架构示意图;
图4为本申请实施例提供的一种针对应用客户端的校验方法的流程示意图;
图5为本申请实施例提供的一种将多个切片组装成一个循环队列的原理示意图;
图6为本申请实施例提供的一种基于特征值和高危切片的针对应用客户端的校验方法的流程示意图;
图7为本申请实施例提供的针对应用客户端的校验方法的一个特例的原理示意图;
图8为本申请实施例提供的属于作弊软件的一种外挂的界面示意图;
图9为本申请实施例提供的使用作弊软件的终端设备被中断连接且显示提示信息的一个示例图;
图10为本申请实施例提供的一种服务器平台中的服务器的内部结构示意图。
具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能解释为对本发明的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
首先对本申请涉及的几个名词进行介绍和解释:
PE(Portable Executable,可移植的可执行的)文件:指windows系统上可移植的可执行的文件,常见的后缀为EXE(EXEcutable,可执行的)、DLL(Dynamic Link Library,动态链接库)或SYS(SYStem,系统)的文件都是PE文件,是承载了执行函数,资源等的二进制文件。
自加载:把文件系统中的PE文件按照内存布局加载到内存中的过程。
VA(Virtual Address,虚拟内存地址):指应用客户端中的模块(例如PE文件)中的指令被装入内存后的地址。本申请文件中的内存指虚拟内存空间。
RVA(Relative Virtual Address,相对虚拟内存地址):是应用客户端中的模块(例如PE文件)中指令的内存地址相对于该模块基址的偏移量。
模块基址(Image base):应用客户端中的模块(例如PE文件)加载到内存时的基地址。例如,默认情况下,EXE文件在内存中的基地址时0x00400000,DLL文件是0x10000000。这些模块基址可以通过修改编译选项更改。
虚拟内存地址、模块基址、以及相对虚拟内存地址的关系可以用下述表达式表示:VA=Image Base+RVA。
切片(slice),在本文指将一个客户端中一个模块对应的大内存块(如50M,M为兆字节的简称)按照一定大小(如8K,K为千字节的简称)分成N个小内存块,如图1所示,N为正整数。例如,大内存块为应用客户端中一个模块加载内存中的内存数据所占内存空间。
本发明的发明人首先研究了应用客户端中模块加载到内存中的原理。以模块中的PE文件为例,图2为PE文件加载到内存中的原理示意图。图2中,左边各框表示存储在非易失性存储器(例如硬盘或闪存等)中的PE(磁盘)文件的各模块,右边各框表示该PE文件加载到内存中的内存映像结构。其中,.text块也叫代码段,加载到内存中后在应用客户端运行过程中,.text段二进制数据保持不变;数据段包含.data块,甚至应用运行时动态分配的堆(heap)和栈(stack)空间,在应用运行过程中,应用自身会不断的修改数据段(包括.data块)的数据。代码和数据共同决定应用中的行为。篡改应用客户端的内存代码段,改变应用执行逻辑是作弊软件实现恶意功能的常用方式之一,作弊软件包括外挂,如游戏外挂的无敌、多倍伤害攻击、全屏攻击、秒杀等功能,外挂为作弊玩家提供游戏自身没有的功能,实现游戏角色行为异常。.rdata块中包含只读数据;DOS头、PE文件头和块表分别用于存放PE文件中的指定信息,不赘述。200h和1000h分别表示两种对齐值。
本发明的发明人通过研究现有的一种现有的针对应用客户端的校验方法发现,由于应用客户端中需要被检测的模块,一般是比较重要的模块,因此该模块往往会被加壳、加密或压缩等安全保护处理;终端设备中的安全软件客户端是不进行解壳、解密或解压缩处理,直接将安全保护处理后的模块自加载到内存中,作为对比参考物;然而,应用客户端真实运行时,同一模块会被解壳、解密或解压缩处理后再加载到内存中。因此,即使该模块未被作弊软件篡改,也会因为是否进行解壳、解密或解压缩处理的差异,导致同一模块的对比参考物与应用客户端真实运行该模块的内存代码段不一致,导致大量的误判,无法识别哪一次校验是正确的,哪一次是误判的,从而容易导致校验失效。
而且,本发明的发明人还发现,一种现有的针对应用客户端的校验方法是由应用客户端所属的终端设备中的安全软件客户端执行的,由于终端设备的安全防护能力有限,安全软件客户端很容易被作弊软件的作者攻破和获取,作弊软件的作者通过逆向分析安全软件客户端后,可以通过篡改安全软件客户端本身的代码、篡改安全软件客户端上传的校验结果、或者拦截安全软件客户端上传的校验结果,导致安全软件客户端被对抗,而且这样被对抗也难被安全软件的技术人员发现,从而导致该校验方法容易被作弊软件规避。
本发明的发明人通过研究现有的另一种现有的针对应用客户端的校验方法发现,执行该校验方法,必须需要获取到作弊软件样本,属于点对点的事后被动响应处理,在反作弊软件对抗上存在延时等时效性问题;对于未获取到样本的作弊软件,无法识别和对抗,存在覆盖不够全面和对抗十分有限的缺陷;缺少主动发现作弊软件的能力;需要人工分析,人力成本较高。
本申请提供的针对应用客户端的校验方法、装置、电子设备和存储介质,旨在解决现有技术的如上技术问题。
下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
本申请的一个实施例提供了一种针对应用客户端的校验系统,如图3所示,该系统包括:服务器平台和多个终端设备。
终端设备通过网络与服务器平台电连接。本申请实施例中的网络可以包括互联网和移动通信网络中的至少一种;互联网可以包括局域网。
终端设备具有联网、输入输出和显示功能,例如终端设备可以是台式电脑、笔记本电脑或二合一电脑等设备。可选地,终端设备是具有X86架构的设备。
终端设备可以通过局域网接入网络,也可以通过移动通信网络接入网络。
例如,终端设备可以通过WiFi(Wireless Fidelity,无线保真)局域网接入互联网。
再如,终端设备可以通过3G(3rd-Generation wireless telephonetechnology,第三代手机通信技术)、LTE(Long Term Evolution,长期演进)等移动通信网络接入互联网。
服务器平台可以包括单台服务器、服务器集群和分布式服务器中的至少一种。
服务器平台可以以有线的方式接入网络。例如,服务器平台通过光纤接入互联网的广域网或者主干网。
可选地,本申请实施例的针对应用客户端的校验系统中,服务器平台中安装有安全软件服务器端,每个终端设备中安装有安全软件客户端,安全软件服务器端为主,安全软件客户端为辅,共同实施本申请实施例后续提供的针对应用客户端的校验方法,以对各终端设备中启动运行后的应用客户端(即应用客户端已载入到内存中的二进制数据)进行校验,具体方法在后续详解介绍,此处不赘述。
为了便于理解,本文后续将服务器平台中的安全软件服务器端的功能,归结为服务器平台的功能,将服务器平台中的安全软件服务器端,简称为服务器平台。同理,终端设备中的安全软件客户端,简称为终端设备。
本申请的另一个实施例提供了一种针对应用客户端的校验方法,如图4所示,该方法包括:
S401:服务器平台接收到终端设备中应用客户端启动运行后的登录请求时,下发对应的扫描配置信息,使得终端设备根据扫描配置信息,对应用客户端中被校验模块中的各切片进行扫描,得到各切片的特征值并上传。
S402:服务器平台根据获取得到的各种切片的基准特征值,对各切片的特征值进行校验。
S403:服务器平台当根据校验结果确定出存在异常切片时,根据获取得到的各种子切片的基准特征值,对异常切片的至少一级子切片进行校验,直到达到扫描配置信息中的切片级数,对最后一级子异常切片的二进制代码片段进行校验。
S404:服务器平台输出二进制代码片段的校验结果。
本实施例中,通过聚集代替作弊软件样本,就可以得到各种切片和各种子切片的基准特征值,即无需作弊软件样本就可以实现针对应用客户端的校验,大大提升了主动发现作弊行为的性能;应用客户端的绝大部分校验过程实现了程序自动化,节省了大量的人工分析和比对,大大提升了校验速度和效率,降低了人工成本。
由于本实施例是对已经启动运行后的应用客户端中的模块进行校验,即对加载到内存中的经过解壳、解密或解压缩等反安全保护处理的模块进行校验,避免了校验失效,大大提升了校验的有效性;而且,本实施例中,主要的校验步骤是在服务器平台执行,大大减低了校验被作弊软件规避的几率。
此外,本实施例中,一旦发现异常切片,会对异常切片的至少一级子切片进行校验,相当于逐步缩小内存范围进行校验,大大提升了校验的效率和精度。有利于后续通过对最后一级子异常切片的二进制代码片段进行分析、确认具体被篡改了哪个函数、哪行代码,有利于推测作弊软件篡改此切片或子切片的目的及可能的作弊功能,有利于提升分析效率,可以提升可运营性。
本申请的又一个实施例提供了一种应用客户端的扩展的校验方法,该扩展的校验方法,包括:应用客户端中各模块的各种切片和子切片的基准特征值的聚集方法、高危切片的聚集方法、以及基于基准特征值和高危切片的针对应用客户端的校验方法。
可选地,本申请实施例中,应用客户端包括游戏客户端和即时通讯客户端中的一种。
可选地,本申请实施例中,应用客户端中被校验模块包括PE文件;PE文件包括EXE文件、DLL文件和SYS文件中的至少一种。
下面介绍应用客户端中各模块的各种切片和子切片的基准特征值的聚集方法。
具体地,服务器平台针对多个终端设备中运行(在内存中)的应用客户端,下发对应的扫描配置信息和随机扫描指令,使得每个终端设备针对每个级别的切片尺寸,将被校验模块划分成多个该级别的切片或子切片,并将多个该级别的切片或子切片设置为循环列表,对循环列表中该级别的各切片或子切片进行随机扫描,得到该级别各切片或子切片的特征值并上传至服务器平台。扫描配置信息包括应用客户端的被校验模块的信息、扫描范围和各级别的切片尺寸。
服务器平台对于每个级别的每种切片,将出现次数占比高于出现次数占比阈值的特征值,确定为该级别该种切片的基准特征值。
可选地,当应用客户端具体为游戏客户端时,服务器平台针对多个终端设备中运行的游戏客户端,下发对应的扫描配置信息。扫描配置信息主要包括游戏客户端的被校验模块的信息、扫描范围和各级别的切片尺寸等数据。被校验模块的信息包括模块索引(ModuleIndex)和模块名称(ModuleName)。扫描范围包括模块的RAV的起始地址(BeginOffset)和模块的扫描总长度(ScanLen)。
可选地,各级别的切片尺寸(SliceSize)可以包括L个级别的切片尺寸,L为大于1的正整数;从二级切片尺寸开始都对应子切片,即二级切片尺寸对应一级子切片,第i级切片尺寸对应第(i-1)级子切片,i为小于L的正整数;前一级切片尺寸大于后一级切片尺寸。
可选地,各级别的切片尺寸包括一级切片尺寸(FristSliceSize)、二级切片尺寸(SecondSliceSize)和三级切片尺寸(ThridSliceSize),一级切片尺寸、二级切片尺寸和三级切片尺寸依次递减。
例如,某一游戏客户端的扫描配置信息如下:
“ModuleIndex=0,ModuleName=ABC.exe,BeginOffset=0x1000,ScanLen=0x1E00000;
ModuleIndex=1,ModuleName=Gamerpcs.dll,BeginOffset=0x1000,ScanLen=0x300000;
FristSliceSize=0x2000,SecondSliceSize=0x400,ThridSliceSize=0x100”。
上述某一游戏客户端的扫描配置信息表明,需要扫描(校验)ABC.exe(为了保护隐私,使用ABC替代原始exe文件名称)和GameRpcs.dll两个模块的内存代码(即该两个模块在内存中的二进制数据)的完整性。ABC.exe模块被扫描(校验)的(代码段)相对虚拟地址(RAV)起始地址是0x1000,转换为虚拟内存(绝对)地址(VA)时,需要加上ABC.exe模块的基地址,因为模块的基地址是不固定的,所以VA地址也是变化的。
每个终端设备接收到运行中的游戏客户端的扫描配置信息后,根据扫描配置信息,对各个(被扫描)模块划分成多个切片;然后,将多个切片组装成一个循环队列。从任何一个切片开始,可以遍历扫描所有的切片,也可以不断重复扫描,直至该游戏客户端断开或退出登录。
例如,如图5所示,图5中左边两个大长方形表示内存中的两个模块,大长方形中划分出的密集排布的竖向小长方形表示该模块中划分出的多个切片。图5右边表示一个模块的多个切片组装成的一个循环队列,0和1分别表示连个切片的ID(Identification,标识)。
可选地,当应用客户端具体为游戏客户端时,服务器平台针对多个终端设备中运行的游戏客户端,下发对应的随机扫描指令。随机扫描指令中携带有扫描起始切片ID,即BeginScanIndex。例如,BeginScanIndex=100。
具体地,服务器平台为每个终端设备生成随机的扫描起始切片ID,让每个终端设备能从不同的切片ID开始扫描。
每个终端设备对该游戏客户端的每个(被校验)模块中的每个切片进行扫描,确定出每个切片的特征值。切片的特征值包括切片所属的被校验模块的信息、被校验模块的基址(ImageBase)、切片标识(SliceID)和切片的摘要值、以及二进制代码片段中的至少一种。被校验模块的信息中包括被校验模块索引(ModuleIndex),切片的摘要值包括切片哈希(Hash)值。
可选地,终端设备可以利用Hash函数,计算出每个切片的Hash值。可选地,终端设备通过Hash函数,基于每一个切片的切片ID、切片起始地址(SliceVA)和切片长度(SliceLength),确定出每一个切片的Hash值。
可选地,终端设备将得到的每个级别的每个切片或子切片的特征值,向服务器平台上传。可选地,将每个级别的每个切片的ModuleIndex,模块基址ImageBase,切片标识SliceID和切片哈希SliceHash值组成一组数据,作为每个切片的特征值,向服务器平台上传。
可选地,最后一级子切片的特征值包括最后一级子切片的(内存)二进制代码片段。每个终端设备将应用客户端的最后一级子切片的(内存)二进制代码片段,向服务器平台上传。服务器平台对于每种最后一级切片,将出现次数占比高于出现次数占比阈值的二进制代码片段,确定为该种最后一级切片的基准二进制代码片段。
利用本申请实施例,即使全服上百万个终端设备中的游戏客户端同时在线,也能够保证该游戏客户端的每一个切片能够在短时间内被扫描。
服务器平台向每个终端设备下发一个随机的扫描起始切片ID,比如终端设备A从100号切片开始扫描,终端设备B从588号切片开始扫描,终端设备C从切片2000开始等等,游戏客户端同时登录在线超过100万个,而游戏客户端的切片总数在4000个左右,因此,平均每个切片有250个终端设备在同时扫描,通过对(扫描)起始切片ID的随机化,可以保证在短时间内,每个切片都有终端设备在扫描,能够在较短的时间内统计(属于聚集)到游戏客户端中每个切片的正确的hash(哈希)数据(属于特征值)等。
可选地,服务器平台的通过大数据分析和聚集方法,快速聚集出每个切片的正确的hash值。
由于同时有多个终端设备在扫描同一种切片,使用作弊软件的终端设备毕竟是少数,因此,很容易统计和区分哪个终端设备上传的该切片hash值是正常的。
例如,当服务器平台收集的同一种切片的特征值总量大于100个,并且100个切片Hash值中出现次数最多的那个Hash值占比大于75%,即可认为是正确的Hash值,从而作为该种切片的基准Hash值,从而得到该种切片的基准特征值。同理可得各级别每种子切片的基准特征值。
可见,本申请实施例中,设定每个终端设备运行中的应用客户端中各切片的扫描起始切片,能够快速聚集统计到每个切片的争取的特征值,大大提升了聚集切片的特征值的速度和效率。
可选地,当应用客户端的版本更新、应用客户端的作弊软件的版本更新、或者达到预定时段时,对各种切片和子切片的基准特征值进行更新;预定时段的数量级为月、十天、天或小时。例如,每3-4个小时更新一次基准特征值。各种切片和子切片的基准特征值的更新方法与上述基准特征值的聚集方法一致,不赘述。
下面介绍本申请实施例中,高危切片的聚集方法。
服务器平台对于多个终端设备中运行(在内存中)的应用客户端,针对该应用客户端中被校验模块中每个切片,将每个终端设备的该切片的特征值,与该切片的基准特征值进行比较;将特征值与基准特征值不一致的切片,确定为该切片的异常切片。
以及,服务器平台将异常切片出现次数超过异常切片阈值出现次数的每个切片,确定为高危切片。
可选地,服务器平台将应用客户端中被模块的每个切片的基准Hash值,与每个终端设备上报的该切片的Hash值进行对比,若不一致,则确定该终端设备上报的Hash值所属的切片为异常切片,该异常切片的内存代码存在被作弊软件篡改的可能性。
可选地,被外挂等作弊软件修改次数最多的切片称为高危切片。比如作弊软件修改某个切片可实现一种很恶意的作弊功能。作弊用户会追随具有独特、使用作弊软件后收益比较高、作弊功能稳定的作弊软件,导致该作弊软件的使用量会剧增,同时其他作弊软件也会学习该作弊软件的实现方式,因此该种切片便成为一个高危切片。
例如,本申请实施例中,通过上述的数据聚集统计,确定出每种切片(或子切片)的基准特征值,以及每种切片(或子切片)的异常切片。对各种切片的异常切片的出现次数进行排序,即可得出高危切片集合,比如被篡改次数大于200次的异常切片(即异常切片出现次数大于200次的该种切片)视为高危切片,异常切片出现次数小于200次的该种切片继续监视等。
可选地,当应用客户端的版本更新、应用客户端的作弊软件的版本更新、或者达到预定时段时,对高危切片进行更新;预定时段的数量级为月、十天、天或小时。例如,每3-4个小时更新一次。高危切片进行更新方法与上述高危切片的聚集方法一致,不赘述。
可选地,基于特征值和高危切片的针对应用客户端的校验方法,可以是实时持续进行的。可选地,当前某一应用还在运营或服务时,服务器平台持续地实时执行基于特征值和高危切片的针对应用客户端的校验方法。
下面介绍基于特征值和高危切片的针对应用客户端的校验方法,该方法流程示意图如图6所示,包括下述步骤:
S601:服务器平台接收到终端设备中应用客户端启动运行后的登录请求时,针对终端设备的内存中运行的应用客户端,下发对应的扫描配置信息。
可选地,扫描配置信息包括应用客户端的被校验模块的信息、扫描范围和各级别的切片尺寸。
可选地,服务器平台在下发对应的扫描配置信息之前,还包括:当确定出应用客户端的标识记录在排除列表中时,确定该应用客户端为合法的第三方软件,结束校验。这样可以排除合法的第三方软件的hook(钩子)行为,避免将合法的第三方软件误判为作弊软件,提升校验的可靠性。本文中hook是指函数代码hook技术(俗称钩子、挂钩),在对特定的函数代码进行hook后,一旦程序执行流执行到hook代码处,对该函数进行hook的程序就会获得执行时机,这时程序就能在第一时间做出响应,进而可以进行处理、修改或加入新的功能。
S602:终端设备根据扫描配置信息中的应用客户端的被校验模块的信息、扫描范围和一级切片尺寸,将被校验模块划分成多个切片并将多个切片设置为循环列表,上传初始化完成消息。
每个终端设备针对扫描配置信息中的一级切片尺寸,将被校验模块划分成多个切片,并将多个切片设置为循环列表,向服务器平台上传初始化完成消息。
S603:服务器平台接收到初始化完成消息后,确认是否存在高危切片;若存在高危切片,则执行S604;若不存在高危切片,则执行S606。
可选地,服务器平台接收到每个终端设备的初始化完成消息后,确认是否存在应用客户端的高危切片;若存在高危切片,则执行S604;若不存在高危切片,则执行S606。
S604:服务器平台下发高危切片的标识。
可选地,服务器平台向上传初始化完成消息的每个终端设备,下发高危切片的标识。
S605:终端设备根据高危切片的标识,对循环列表中的高危切片进行扫描后,对循环列表中的其它切片进行扫描,得到各切片的特征值并上传,之后执行S608。
可选地,针对某一应用客户端,当存在多个高危切片时,每个终端设备可以对多个高危切片进行随机遍历扫描,得到每个高危切片的特征值,向服务器平台上传。
可选地,针对某一应用客户端,每个终端设备可以对循环列表中除了各高危切片之外的其它切片进行随机遍历扫描,得到每个其它切片的特征值,向服务器平台上传。
S606:服务器平台下发随机扫描指令。
可选地,服务器平台向上传初始化完成消息的每个终端设备,下发随机扫描指令。
S607:终端设备根据随机扫描指令,对循环列表中的各切片进行随机扫描,得到各切片的特征值并上传。
可选地,终端设备根据随机扫描指令,对循环列表中的各切片进行随机遍历扫描,得到各切片的特征值并上传。
S608:服务器平台根据获取得到的各种切片的基准特征值,对各切片的特征值进行校验;根据校验结果确定是否存在异常切片,若是,则执行S609;否则周期性执行S606。
可选地,服务器平台针对每个终端设备中的应用客户端,对于接收到的每个高危切片的特征值,将该高危切片的特征值,与该种高危切片的基准特征值进行对比(属于校验);判断对比结果是否一致,若对比结果一致,则确定该终端设备中运行的该高危切片是正常切片;若对比结果不一致,则确定该终端设备中运行的该高危切片是异常切片。
服务器平台校验完该终端设备中该应用客户端的所有高危切片之后,对于接收到的每个其它切片的特征值,将该其它切片的特征值,与该种其它切片的基准特征值进行对比(属于校验);判断对比结果是否一致,若对比结果一致,则确定该终端设备中运行的该其它切片是正常切片;若对比结果不一致,则确定该终端设备中运行的该其它切片是异常切片。
可选地,服务器平台针对每个终端设备中的应用客户端,对于接收到的每个切片的特征值,将该切片的特征值,与该种切片的基准特征值进行对比;判断对比结果是否一致,若对比结果一致,则确定该终端设备中运行的该切片是正常切片;若对比结果不一致,则确定该终端设备中运行的该切片是异常切片。
服务器平台对每个终端设备中应用客户端中的每个切片的特征值都对比完毕后,判断该终端设备中的应用客户端是否存在异常切片,若是,则执行S609;否则周期性执行S606。
本申请实施例中,对高危切片进行优先扫描和校验,加快了发现异常切片的速度,提升了发现异常切片的效率,提升了对抗作弊软件的效率和效果。
本申请实施例中,当服务器平台根据校验结果确定出存在异常切片时,判断该异常切片是否属于合法的第三方软件的切片;若该异常切片属于合法的第三方软件的切片,则结束校验;否则执行S609。这样可以排除合法的第三方软件的hook行为,避免将合法的第三方软件误判为作弊软件,提升校验的可靠性。
S609:服务器平台根据获取得到的各种子切片的基准特征值,下发异常切片的标识。
S610:终端设备根据异常切片的标识和扫描配置信息中的二级切片尺寸,将该异常切片划分成多个一级子切片,对多个一级子切片进行扫描,得到各一级子切片的特征值上传。
当切片级数为二级时,一级子切片即为最后一级子切片。
可选地,本申请中切片的尺寸随着切片级数的增加而逐级减小,前一级切片或子切片的尺寸大于后一级子切片的尺寸。具体地,切片的尺寸大于一级子切片的尺寸,一级子切片的尺寸大于二级子切片的尺寸。
事实上,切片大小和切片级数都可以按照实际需求设定。可选地,可以根据扫描深度(对应于切片级数)与扫描耗时、数据流量之间的平衡,设定切片级数和各级切片(和子切片)的尺寸。例如,针对某一游戏客户端设置了三级切片和子切片,该三级切片和子切片的尺寸分别为FristSliceSize=0x2000,SecondSliceSize=0x400,ThridSliceSize=0x100;一级切片(即切片)的大小(即尺寸(是0x2000字节,二级切片(即一级子切片)大小为0x400字节,三级切片(即二级子切片)也就是最小子切片大小为0x100。
S611:服务器平台将接收的每个一级子切片的特征值,与对应的基准特征值进行对比;根据对比结果,确定出一级异常子切片,下发一级异常子切片的二进制代码片段的获取指令。
S612:终端设备根据一级异常子切片的二进制代码片段获取指令,上传一级异常子切片的二进制代码片段。
S613:服务器平台对一级异常子切片的二进制代码片段进行校验,输出该二进制代码片段的校验结果。
本申请中,通过输出最小子切片的二进制(内存)代码片段,可便于技术人员分析、确认具体哪个函数、哪行代码被篡改,便于技术人员推测作弊软件篡改此子切片的目的及可能具有的作弊功能,有利于提升对抗效率和改进应用的效率。下面介绍针对应用客户端的校验方法的一个特例。
图7为针对应用客户端的校验方法的一个特例的原理示意图。如图7所示,图中的客户端包括终端设备中的游戏客户端(属于应用客户端)和安全软件客户端,本申请实施例中的服务器平台包括服务器、DB(DataBase,数据库)服务器和监控设备。DB服务器简称为DB,监控设备简称为监控。
服务器获取得到某一游戏客户端中各级别的各种切片和子切片的基准hash值、以及最后一级子切片的基准二进制代码片段后,将该游戏客户端中各级别的各种切片和子切片的基准hash值、以及最后一级子切片的基准二进制代码片段,都存储到DB中名为切片配置仓库管理的数据库中。服务器获取得到该游戏客户端中各高危切片ID,存储到DB中名为高危切片仓库的数据库中。
存在多个终端设备在内存中运行该游戏客户端,其中某一些终端设备中还运行有一些针对该游戏客户端的作弊软件。图8是属于作弊软件的一种外挂的界面示意图;为了保护隐私,图8中采用一些斜条纹块对一些隐私信息进行遮挡。
下面介绍针对该游戏客户端的校验过程。
1.登录。具体地,终端设备中的游戏客户端启动运行后,游戏客户端的部分代码加载到内存中,在本终端设备中显示该游戏客户端的登录界面,通过登录界面接收到用户输入的登录信息后,生成登录请求向服务器上传。
2.下发扫描配置。具体地,服务器接收到终端设备上传的登录请求时,下发该登录请求所属游戏客户端对应的扫描配置信息。
3.切片。具体地,终端设备根据扫描配置信息中的应用客户端的被校验模块的信息、扫描范围和一级切片尺寸,将被校验模块划分成多个切片。
4.初始化完成。具体地,终端设备将多个切片设置为循环列表,上传初始化完成消息。
5.查询和6.返回。具体地,服务器接收到初始化完成消息后,从DB的高危切片仓库中查询是否存在该游戏客户端的高危切片。当存在高危切片时,从DB返回各高危切片ID至服务器。
7.下发高危切片ID。具体地,服务器将该游戏客户端的各高危切片ID向上传初始化完成消息的终端设备下发。
8.优先扫描(属于最高级扫描)和9.上报hash。具体地,终端设备接收到该游戏客户端的各高危切片ID后,根据高危切片的标识,对循环列表中的高危切片进行遍历扫描,得到各高危切片的hash值;对于每个高危切片,将该高危切片所属模块的模块索引、模块基质、高危切片ID和高危切片hash值组成一组,一并向服务器上传。
10.查询和11.返回正确hash值。具体地,服务器对于每个高危切片,向DB的切片配置仓库管理,发送该种高危切片的基准hash值(属于基准特征值)的查询请求,DB返回该种高危切片的基准hash值至服务器。
12.对比和13.异常监控。具体地,服务器对于每个终端设备上传的每个高危切片,将该高危切片hash值与该种高危切片的基准hash值进行对比,判断两个hash值是否一致,若一致,则确定该终端设备的该高危切片为正常切片;若不一致,则确认该终端设备的该高危切片为异常切片。将异常切片的ID和hash值、以及异常切片所属模块的模块索引和模块基址等异常监控信息,向监控发送。
14.随机切片扫描(属于一级扫描)和15.上报hash。具体地,每个终端设备对循环列表中除了高危切片之外的其它切片进行随机遍历扫描,得到各其它切片的hash值;对于每个其它切片,将该其它切片所属模块的模块索引、模块基质、其它切片ID和其它切片hash值组成一组,一并向服务器上传。
16.查询和17.返回正确hash值。具体地,服务器对于每个其它切片,向DB的切片配置仓库管理发送该种其它切片的基准hash值(属于基准特征值)的查询请求,DB返回该种其它切片的基准hash值至服务器。
18.对比和19.异常监控。具体地,服务器对于每个终端设备上传的每个其它切片,将该其它切片hash值与该种其它切片的基准hash值进行对比,判断两个hash值是否一致,若一致,则确定该终端设备的该其它切片为正常切片;若不一致,则确认该终端设备的该其它切片为异常切片。将异常切片的ID和hash值、以及异常切片所属模块的模块索引和模块基址等异常监控信息,向监控发送。
20.下发异常切片ID。具体地,服务器将确定出的该游戏客户端的每个异常切片ID,向上传该异常切片的终端设备下发。
21.子切片扫描(属于二级扫描)和22.上报hash。具体地,每个终端设备根据接收到的每个异常切片ID,将该异常切片划分成多个一级子切片,并将多个一级子切片设置成循环列表;对循环列表中的各一级子切片进行随机遍历扫描,得到各一级子切片的hash值;对于每个一级子切片,将该一级子切片所属模块的模块索引、模块基质、一级子切片ID和一级子切片hash值组成一组,一并向服务器上传。
23.查询和24.返回正确hash值。具体地,服务器对于每个一级子切片,向DB的切片配置仓库管理发送该种一级子切片的基准hash值(属于基准特征值)的查询请求,DB返回该种一级子切片的基准hash值至服务器。
25.对比和26.异常监控。具体地,服务器对于每个终端设备上传的每个一级子切片,将该一级子切片hash值与该种一级子切片的基准hash值进行对比,判断两个hash值是否一致,若一致,则确定该终端设备的该一级子切片为正常切片;若不一致,则确认该终端设备的该一级子切片为一级异常子切片。将一级异常子切片的ID和hash值、以及一级异常子切片所属模块的模块索引和模块基址等异常监控信息,向监控(设备)发送。监控(设备)对接收到的各异常监控信息,进行定时统计,并输出统计结果(属于监控结果)。
27.下发获取二进制代码片段。具体地,服务器将一级异常子切片作为异常最后一级子切片,向存在一级异常子切片的终端设备,下发针对一级异常子切片的(内存)二进制代码片段的获取请求。
28.获取二进制代码(属于三级扫描)和29.上报二进制代码片段。具体地,终端设备根据针对一级异常子切片的二进制代码片段的获取指令,从内存中读取该一级异常子切片的二进制代码片段,向服务器上传。
30.查询和31.返回正确代码片段。具体地,服务器对于每个一级异常子切片,向DB的切片配置仓库管理发送该种一级子切片的基准二进制代码片段的查询请求,DB返回该种一级子切片的基准二进制代码片段至服务器。
32.对比和33.异常监控。具体地,服务器对于终端设备上传的每个一级异常子切片的二进制代码片段,将该一级异常子切片的二进制代码片段与该种一级子切片的基准二进制代码片段进行对比,判断两个二进制代码片段是否一致,若一致,则确定该终端设备的该一级异常子切片的二进制代码片段为正常二进制代码片段;若不一致,则确认该终端设备的该一级异常子切片的二进制代码片段为异常二进制代码片段。将一级异常子切片的ID和异常二进制代码片段、以及一级异常子切片所属模块的模块索引和模块基址等异常监控信息,向监控(设备)发送。监控(设备)对接收到的异常二进制代码片段进行显示,供技术人员进行人工分析和确认。
服务器确定出异常切片、一级子异常切片、或者异常二进制代码片段后,向上传的异常切片或一级子异常切片的特征值、或者异常二进制代码片段的终端设备下发网络中断信息后,切断该终端设备中该游戏客户端的连接。
使用作弊软件的终端设备接收到网络中断信息时,显示对应的提示信息。例如,如图9所示,使用作弊软件的终端设备接收到网络中断信息时,在屏幕上显示如下文字公告“系统检测到您的帐号出现数据异常,服务器与您的连接将会断开一段时间。使用非法第三方软件等不规范的游戏行为,将给予严厉的封号处罚”。然后,服务器中断该终端设备的游戏客户端的连接后,该终端设备的游戏客户端中显示“网络连接中断”的公告。
基于同一发明构思,本申请的又一个实施例提供了一种针对应用客户端的校验装置,包括:信息收发模块、校验模块和输出模块。
信息收发模块,用于接收到终端设备中应用客户端启动运行后的登录请求时,下发对应的扫描配置信息,使得终端设备根据扫描配置信息,对应用客户端中被校验模块中的各切片进行扫描,得到各切片的特征值并上传。
校验模块,用于根据获取得到的各种切片的基准特征值,对各切片的特征值进行校验;当根据校验结果确定出存在异常切片时,根据获取得到的各种子切片的基准特征值,对异常切片的至少一级子切片进行校验,直到达到扫描配置信息中的切片级数,对最后一级子异常切片的二进制代码片段进行校验。
输出模块,用于输出所述二进制代码片段的校验结果。
可选地,本申请实施例中针对应用客户端的校验装置,还包括:聚集模块。
聚集模块,用于通过下述方法预先获取得到各种切片和子切片的基准特征值:针对多个终端设备中运行内存的应用客户端,下发对应的扫描配置信息和随机扫描指令,扫描配置信息包括应用客户端的被校验模块的信息、扫描范围和各级别的切片尺寸,使得每个终端设备针对每个级别的切片尺寸,将被校验模块划分成多个该级别的切片或子切片,并将多个该级别的切片或子切片设置为循环列表,对循环列表中该级别的各切片或子切片进行随机扫描,得到该级别各切片或子切片的特征值并上传;对于每个级别的每种切片,将出现次数占比高于出现次数占比阈值的特征值,确定为该级别该种切片的基准特征值。
可选地,信息收发模块,具体用于针对终端设备的内存中运行的应用客户端,下发对应的扫描配置信息,使得终端设备根据扫描配置信息中的应用客户端的被校验模块的信息、扫描范围和一级切片尺寸,将被校验模块划分成多个切片并将多个切片设置为循环列表,上传初始化完成消息;接收到初始化完成消息后,确认是否存在高危切片;若存在高危切片,则下发高危切片的标识,使得终端设备根据高危切片的标识,对循环列表中的高危切片进行扫描后,对循环列表中的其它切片进行扫描,得到各切片的特征值并上传。
可选地,聚集模块,还用于通过下述方法预先获取得到高危切片:对于多个终端设备中运行的应用客户端,针对该应用客户端中被校验模块中每种切片,将每个终端设备的该切片的特征值,与该种切片的基准特征值进行比较;将特征值与基准特征值不一致的切片,确定为该种切片的异常切片;将异常切片出现次数超过异常切片阈值出现次数的每种切片,确定为高危切片。
可选地,信息收发模块,还用于若不存在高危切片,则下发随机扫描指令,使得终端设备根据随机扫描指令,对循环列表中的各切片进行随机扫描,得到各切片的特征值并上传。
可选地,校验模块,具体用于下发异常切片的标识,使得终端设备根据异常切片的标识和扫描配置信息中的二级切片尺寸,将该异常切片划分成多个一级子切片,对多个一级子切片进行扫描,得到各一级子切片的特征值上传;当切片级数为二级时,一级子切片即为最后一级子切片;将接收的每个一级子切片的特征值,与对应的基准特征值进行对比;根据对比结果,确定出一级异常子切片,下发一级异常子切片的二进制代码片段的获取指令;使得终端设备根据获取指令,上传一级异常子切片的二进制代码片段;对二进制代码片段进行校验。
可选地,聚集模块,还用于当应用客户端的版本更新、应用客户端的作弊软件的版本更新、或者达到预定时段时,对高危切片进行更新;预定时段的数量级为月、十天、天或小时。
可选地,聚集模块,还用于当应用客户端的版本更新、应用客户端的作弊软件的版本更新、或者达到预定时段时,对各种切片和子切片的基准特征值进行更新;预定时段的数量级为月、十天、天或小时。
可选地,校验模块,还用于下发对应的扫描配置信息之前,当确定出应用客户端的标识记录在排除列表中时,确定该应用客户端为合法的第三方软件,结束校验;或者,当根据校验结果确定出存在异常切片时,判断该异常切片是否属于合法的第三方软件的切片;若该异常切片属于合法的第三方软件的切片,则结束校验。
本实施例的针对应用客户端的校验装置可执行本申请上述各实施例中任一实施例或任一可选的实施方式的针对应用客户端的校验方法,其实现原理和所取得的有益技术效果与本申请的针对应用客户端的校验方法相类似,此处不再赘述。
基于同一发明构思,本申请的还一个实施例提供一种服务器平台,包括:处理器、存储器和总线;
总线,用于连接处理器和存储器;存储器,用于存储操作指令;
处理器,用于通过调用操作指令,执行本申请上述各实施例中任一实施例或任一可选的实施方式的针对应用客户端的校验方法。
可选地,本实施例中的服务器平台包括服务器。
图10示出了本申请实施例适用的一种服务器的结构示意图,如图10所示,该服务器1000主要可以包括至少一个处理器1001、存储器1002、网络接口1003和输入/输出接口1004等组件。其中,各组件之间可以通过总线1005实现连接通信。
具体的,存储器1002可以用于存储操作系统和应用程序等,应用程序可以包括在被处理器1001调用时实现本申请实施例所示方法的程序代码或指令,还可以包括用于实现其他功能或服务的程序。
存储器1002可以是ROM(Read Only Memory,只读存储器)或可存储静态信息和指令的其他类型的静态存储设备,RAM(Random Access Memory,随机存取存储器)或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROM(Electrically ErasableProgrammable Read Only Memory,电可擦可编程只读存储器)、CD-ROM(Compact DiscRead Only Memory,只读光盘)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。
处理器1001通过总线1005与存储器1002连接,通过调用存储器1002中所存储的应用程序实现相应的功能。其中,处理器1001可以是CPU(Central Processing Unit,中央处理器),通用处理器,DSP(Digital Signal Processor,数据信号处理器),ASIC(Application Specific Integrated Circuit,专用集成电路),FPGA(FieldProgrammable Gate Array,现场可编程门阵列)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器1001也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
处理器1001可以通过网络接口1003连接到网络,以通过网络与其它设备(如用户终端设备或其他服务器等)的通信,实现数据的交互。例如,服务器1000通过网络接口1003与用户终端设备通信,以获取终端设备中的应用客户端的数据。其中,网络接口1003可以包括有线网络接口和/或无线网络接口。
处理器1001通过输入/输出接口1004可以连接所需要的输入/输出设备,如键盘、显示设备等,通过该接口还可以连接存储装置,如硬盘等,以可以将存储器1002中的数据存储到存储装置中,或者将存储装置中的数据存储到存储器1002中。可以理解的,输入/输出接口1004可以是有线接口,也可以是无线接口。根据实际应用场景的不同,与输入/输出接口1004连接的设备,可以是服务器1000的组成部分,也可以是在需要时与服务器1000连接的外接设备。
可选地,总线1005可以是PCI(Peripheral Component Interconnect,外设部件互连标准)总线或EISA(Extended Industry Standard Architecture,扩展工业标准结构)总线等。根据功能的不同,总线1005可以包括下述至少一项:地址总线、数据总线、控制总线。
可选地,对于本申请实施例所提供的方案而言,存储器1002可以用于存储执行本申请方案的应用程序代码,并由处理器1001来控制执行。
处理器1001用于执行存储器1002中存储的应用程序代码或操作指令,以实现本申请上述各实施例中任一实施例或任一可选的实施方式的针对应用客户端的校验方法;或者,以实现本申请上述实施例的针对应用客户端的校验装置的动作,其实现原理和所取得的有益技术效果与本申请的针对应用客户端的校验方法相类似,此处不再赘述。
基于同一发明构思,本申请实施例提供了一种计算机可读存储介质,存储介质存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现本申请上述各实施例中任一实施例或任一可选的实施方式的针对应用客户端的校验方法。
本申请实施例提供了一种计算机可读存储介质适用于上述方法实施例,其实现原理和所取得的有益技术效果与本申请的针对应用客户端的校验方法相类似,在此不再赘述。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
以上所述仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (13)

1.一种针对应用客户端的校验方法,其特征在于,包括:
接收到终端设备中应用客户端启动运行后的登录请求时,下发对应的扫描配置信息,使得所述终端设备根据所述扫描配置信息,对所述应用客户端中被校验模块中的各切片进行扫描,得到各切片的特征值并上传;
根据获取得到的各种切片的基准特征值,对所述各切片的特征值进行校验;
当根据校验结果确定出存在异常切片时,根据获取得到的各种子切片的基准特征值,对所述异常切片的至少一级子切片进行校验,直到达到所述扫描配置信息中的切片级数,对最后一级子异常切片的二进制代码片段进行校验;
输出所述二进制代码片段的校验结果。
2.根据权利要求1所述的方法,其特征在于,所述各种切片和子切片的基准特征值是通过下述方法预先获取得到的:
针对多个终端设备中运行内存的应用客户端,下发对应的扫描配置信息和随机扫描指令,所述扫描配置信息包括所述应用客户端的被校验模块的信息、扫描范围和各级别的切片尺寸,使得每个所述终端设备针对每个级别的切片尺寸,将所述被校验模块划分成多个该级别的切片或子切片,并将所述多个该级别的切片或子切片设置为循环列表,对所述循环列表中该级别的各切片或子切片进行随机扫描,得到该级别所述各切片或子切片的特征值并上传;
对于每个级别的每种切片,将出现次数占比高于出现次数占比阈值的特征值,确定为该级别该种切片的基准特征值。
3.根据权利要求2所述的方法,其特征在于,所述下发对应的扫描配置信息,使得所述终端设备根据所述扫描配置信息,对所述应用客户端中被校验模块中的各切片进行扫描,得到各切片的特征值并上传,包括:
针对所述终端设备的内存中运行的所述应用客户端,下发对应的扫描配置信息,使得所述终端设备根据所述扫描配置信息中的所述应用客户端的被校验模块的信息、扫描范围和一级切片尺寸,将所述被校验模块划分成多个切片并将所述多个切片设置为循环列表,上传初始化完成消息;
接收到所述初始化完成消息后,确认是否存在高危切片;若存在所述高危切片,则下发所述高危切片的标识,使得所述终端设备根据所述高危切片的标识,对所述循环列表中的高危切片进行扫描后,对所述循环列表中的其它切片进行扫描,得到所述各切片的特征值并上传。
4.根据权利要求3所述的方法,其特征在于,所述高危切片是通过下述方法预先获取得到的:
对于所述多个终端设备中运行的应用客户端,针对该应用客户端中被校验模块中每种切片,将每个终端设备的该切片的特征值,与该种切片的基准特征值进行比较;
将特征值与基准特征值不一致的切片,确定为该种切片的异常切片;
将异常切片出现次数超过异常切片阈值出现次数的每种切片,确定为高危切片。
5.根据权利要求3所述的方法,其特征在于,还包括:若不存在所述高危切片,则下发随机扫描指令,使得所述终端设备根据所述随机扫描指令,对所述循环列表中的各切片进行随机扫描,得到所述各切片的特征值并上传。
6.根据权利要求3所述的方法,其特征在于,所述对所述异常切片的至少一级子切片进行校验,直到达到所述扫描配置信息中的切片级数,对最后一级子异常切片的二进制代码片段进行校验,包括:
下发所述异常切片的标识,使得所述终端设备根据所述异常切片的标识和所述扫描配置信息中的二级切片尺寸,将该所述异常切片划分成多个一级子切片,对多个所述一级子切片进行扫描,得到各所述一级子切片的特征值上传;当所述切片级数为二级时,所述一级子切片即为最后一级子切片;
将接收的每个所述一级子切片的特征值,与对应的基准特征值进行对比;根据对比结果,确定出一级异常子切片,下发所述一级异常子切片的二进制代码片段的获取指令;使得所述终端设备根据所述获取指令,上传所述一级异常子切片的二进制代码片段;
对所述二进制代码片段进行校验。
7.根据权利要求4所述的方法,其特征在于,还包括:当所述应用客户端的版本更新、所述应用客户端的作弊软件的版本更新、或者达到预定时段时,对所述高危切片进行更新;所述预定时段的数量级为月、十天、天或小时。
8.根据权利要求1所述的方法,其特征在于,还包括:当所述应用客户端的版本更新、所述应用客户端的作弊软件的版本更新、或者达到预定时段时,对所述各种切片和子切片的基准特征值进行更新;所述预定时段的数量级为月、十天、天或小时。
9.根据权利要求1所述的方法,其特征在于,还包括下述至少一项:
所述应用客户端包括游戏客户端和即时通讯客户端中的一种;
所述被校验模块包括可移植的可执行的文件;
所述切片的特征值包括所述切片所属的被校验模块的信息和基址、所述切片的标识和所述切片的摘要值、以及二进制代码片段中的至少一种。
10.根据权利要求1所述的方法,其特征在于,还包括:
所述下发对应的扫描配置信息之前,当确定出所述应用客户端的标识记录在排除列表中时,确定该应用客户端为合法的第三方软件,结束校验;
或者,当根据校验结果确定出存在异常切片时,判断该异常切片是否属于合法的第三方软件的切片;若该异常切片属于合法的第三方软件的切片,则结束校验。
11.一种针对应用客户端的校验装置,其特征在于,包括:
信息收发模块,用于接收到终端设备中应用客户端启动运行后的登录请求时,下发对应的扫描配置信息,使得所述终端设备根据所述扫描配置信息,对所述应用客户端中被校验模块中的各切片进行扫描,得到各切片的特征值并上传;
校验模块,用于根据获取得到的各种切片的基准特征值,对所述各切片的特征值进行校验;当根据校验结果确定出存在异常切片时,根据获取得到的各种子切片的基准特征值,对所述异常切片的至少一级子切片进行校验,直到达到所述扫描配置信息中的切片级数,对最后一级子异常切片的二进制代码片段进行校验;
输出模块,用于输出所述二进制代码片段的校验结果。
12.一种服务器平台,其特征在于,其包括:
处理器、存储器和总线;
所述总线,用于连接所述处理器和所述存储器;
所述存储器,用于存储操作指令;
所述处理器,用于通过调用所述操作指令,执行上述权利要求1-10中任一项所述的针对应用客户端的校验方法。
13.一种计算机可读存储介质,其特征在于,所述存储介质存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如权利要求1至10中任一项所述的针对应用客户端的校验方法。
CN201910086890.5A 2019-01-29 2019-01-29 针对应用客户端的校验方法、装置及服务器平台 Active CN109635567B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910086890.5A CN109635567B (zh) 2019-01-29 2019-01-29 针对应用客户端的校验方法、装置及服务器平台

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910086890.5A CN109635567B (zh) 2019-01-29 2019-01-29 针对应用客户端的校验方法、装置及服务器平台

Publications (2)

Publication Number Publication Date
CN109635567A CN109635567A (zh) 2019-04-16
CN109635567B true CN109635567B (zh) 2022-12-16

Family

ID=66062657

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910086890.5A Active CN109635567B (zh) 2019-01-29 2019-01-29 针对应用客户端的校验方法、装置及服务器平台

Country Status (1)

Country Link
CN (1) CN109635567B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110609789A (zh) * 2019-08-29 2019-12-24 烽火通信科技股份有限公司 一种用于软件License校验的方法和系统
CN114021208A (zh) * 2021-12-01 2022-02-08 北京天融信网络安全技术有限公司 摄像设备配置数据检测方法、装置、电子设备及存储介质

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102053854A (zh) * 2009-10-28 2011-05-11 英特尔公司 用于动态并行化二进制程序的上下文相关切片法
CN102622556A (zh) * 2011-12-22 2012-08-01 南京邮电大学 基于程序切片技术的Web服务安全分析方法
CN103002445A (zh) * 2012-11-08 2013-03-27 张维加 一种安全的提供应用服务的移动电子设备
CN103345602A (zh) * 2013-06-14 2013-10-09 腾讯科技(深圳)有限公司 一种客户端代码完整性检测方法、装置和系统
CN104298599A (zh) * 2014-10-21 2015-01-21 卡斯柯信号有限公司 嵌入式软件运行时故障的在线自检与切片恢复方法及装置
CN105120530A (zh) * 2015-09-11 2015-12-02 北京金山安全软件有限公司 一种获取数据的方法、装置及数据获取系统
CN106055933A (zh) * 2016-06-24 2016-10-26 武汉斗鱼网络科技有限公司 一种客户端软件代码校验的方法及系统
CN106960138A (zh) * 2016-01-08 2017-07-18 阿里巴巴集团控股有限公司 虚拟机指令的校验方法及装置、系统
CN107220548A (zh) * 2017-05-03 2017-09-29 同济大学 一种基于数据切片一致性的系统检测方法及系统
CN107741856A (zh) * 2017-09-30 2018-02-27 惠州市德赛西威汽车电子股份有限公司 一种基于eMMC离线烧录的软件升级方法
CN109274534A (zh) * 2018-09-30 2019-01-25 中国联合网络通信集团有限公司 一种网络切片的监管方法及设备、通信系统

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102053854A (zh) * 2009-10-28 2011-05-11 英特尔公司 用于动态并行化二进制程序的上下文相关切片法
CN102622556A (zh) * 2011-12-22 2012-08-01 南京邮电大学 基于程序切片技术的Web服务安全分析方法
CN103002445A (zh) * 2012-11-08 2013-03-27 张维加 一种安全的提供应用服务的移动电子设备
CN103345602A (zh) * 2013-06-14 2013-10-09 腾讯科技(深圳)有限公司 一种客户端代码完整性检测方法、装置和系统
CN104298599A (zh) * 2014-10-21 2015-01-21 卡斯柯信号有限公司 嵌入式软件运行时故障的在线自检与切片恢复方法及装置
CN105120530A (zh) * 2015-09-11 2015-12-02 北京金山安全软件有限公司 一种获取数据的方法、装置及数据获取系统
CN106960138A (zh) * 2016-01-08 2017-07-18 阿里巴巴集团控股有限公司 虚拟机指令的校验方法及装置、系统
CN106055933A (zh) * 2016-06-24 2016-10-26 武汉斗鱼网络科技有限公司 一种客户端软件代码校验的方法及系统
CN107220548A (zh) * 2017-05-03 2017-09-29 同济大学 一种基于数据切片一致性的系统检测方法及系统
CN107741856A (zh) * 2017-09-30 2018-02-27 惠州市德赛西威汽车电子股份有限公司 一种基于eMMC离线烧录的软件升级方法
CN109274534A (zh) * 2018-09-30 2019-01-25 中国联合网络通信集团有限公司 一种网络切片的监管方法及设备、通信系统

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Network Slicing to Enable Scalability and Flexibility in 5G Mobile Networks;Peter Rost等;《IEEE Communications Magazine》;第1-12页;20170512;第55卷(第5期);第72-79页 *
一种基于前向计算的动态程序切片方法;王兴亚等;《计算机科学》;20140115;第41卷(第1期);第250-253+278页 *
信息流安全的静态检测方法研究;肖纯;《中国优秀硕士学位论文全文数据库 信息科技辑》;20130715(第7期);第I138-57页 *

Also Published As

Publication number Publication date
CN109635567A (zh) 2019-04-16

Similar Documents

Publication Publication Date Title
US10528745B2 (en) Method and system for identification of security vulnerabilities
US7540030B1 (en) Method and system for automatic cure against malware
US9264441B2 (en) System and method for securing a network from zero-day vulnerability exploits
US9507936B2 (en) Systems, methods, apparatuses, and computer program products for forensic monitoring
US8819835B2 (en) Silent-mode signature testing in anti-malware processing
US8732825B2 (en) Intelligent hashes for centralized malware detection
US20210120022A1 (en) Network security blacklist derived from honeypot statistics
US9021584B2 (en) System and method for assessing danger of software using prioritized rules
US20220229906A1 (en) High-confidence malware severity classification of reference file set
JP5802848B2 (ja) モバイル環境用のトロイの木馬化されたアプリケーション(アプリ)を特定するためのコンピュータ実装方法、非一時コンピュータ読み取り可能な媒体およびコンピュータシステム
US20140201843A1 (en) Systems and methods for identifying and reporting application and file vulnerabilities
TW201642135A (zh) 文件檢測方法、裝置及系統
GB2471716A (en) Anti-virus scan management using intermediate results
US11288368B1 (en) Signature generation
US9563499B2 (en) Processing run-time error messages and implementing security policies in web hosting
RU2726878C1 (ru) Способ ускорения полной антивирусной проверки файлов на мобильном устройстве
CN109635567B (zh) 针对应用客户端的校验方法、装置及服务器平台
CN110888838A (zh) 基于对象存储的请求处理方法、装置、设备及存储介质
CN110602135A (zh) 网络攻击处理方法、装置以及电子设备
CN112699369A (zh) 一种通过栈回溯检测异常登录的方法及装置
CN112583827A (zh) 一种数据泄露检测方法及装置
KR101865785B1 (ko) 문서 검증 및 변환을 통한 문서 보안시스템 및 문서 보안방법
CN109284268B (zh) 一种快速解析日志的方法、系统及电子设备
CN115935356A (zh) 一种软件安全性测试方法、系统及应用
CN113678419A (zh) 端口扫描检测

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