程序被加速检测方法、存储介质、设备及系统技术方案

技术编号:24090467 阅读:74 留言:0更新日期:2020-05-09 07:50
本发明专利技术公开了一种程序被加速检测方法、存储介质、设备及系统,涉及网络安全领域,该方法包括获取程序运行时所调用的Windows系统的时间函数,所述时间函数包括timeGetTime、GetTickCount、QueryPerformanceCounter和GetSystemTime中的一种或多种;获取时间函数的头代码;将获取的时间函数的头代码上传至后台服务器;后台服务器将接收时间函数的头代码与自身存储的原始时间函数的头代码进行比对,若相同,则判断程序未被加速,若不同,则判断程序被加速。本发明专利技术能够实现程序是否被加速的有效检测。

Accelerated testing method, storage medium, equipment and system

【技术实现步骤摘要】
程序被加速检测方法、存储介质、设备及系统
本专利技术涉及网络安全领域,具体涉及一种程序被加速检测方法、存储介质、设备及系统。
技术介绍
对于运行于Windows端的客户端程序来说,一些非法人士通过非法手段来使得客户端的程序能够进行加速,从而造成了程序的不平衡,甚至对于服务器都是由危害的,其加速的原理是通过内联hook(钩子)来对系统时间函数进行hook,从而对程序中所有获取时间的函数返回一个加速过的时间。例如对于抽奖程序,客户端程序被加速,很有可能其会先发出抽奖命令,违反抽奖的随机性公平远离,而对于游戏程序,如果其被加速,那么游戏中角色的移动都会比其他角色更快速,影响他人的游戏体验。当客户端程序被加速,客户端程序的稳定运行便会受到影响,严重的甚至带来经济等财产上的损失。
技术实现思路
针对现有技术中存在的缺陷,本专利技术的目的在于提供一种程序被加速检测方法,能够实现程序是否被加速的有效检测。本专利技术还相应地提供了存储介质、设备及程序被加速检测系统。为达到以上目的,本专利技术采取的技术方案是:本专利技术第一方面提供一种程序被加速检测方法,用于对运行于Windows系统中的程序进行检测,包括以下步骤:获取程序运行时所调用的Windows系统的时间函数,所述时间函数包括timeGetTime、GetTickCount、QueryPerformanceCounter和GetSystemTime中的一种或多种;获取时间函数的头代码;将获取的时间函数的头代码加密后上传至后台服务器;后台服务器将接收时间函数的头代码与自身存储的原始时间函数的头代码进行比对,若相同,则判断程序未被加速,若不同,则判断程序被加速。结合第一方面,在第一种可能的实现方式中,所述时间函数用于所述程序查询当前系统时间以及程序运行时间;当后台服务器将接收时间函数的头代码与自身存储的原始时间函数的头代码进行比对时,基于程序运行时所调用的时间函数,后台服务器将自身存储的该时间函数的头代码,与接收的该时间函数的头代码进行比对。结合第一方面,在第二种可能的实现方式中,所述将获取的时间函数的头代码加密后上传至后台服务器,具体步骤为:S301:加载组件ntdll.dll,所述组件ntdll.dll中存储有用于获取Windows系统版本号的系统API函数;S302:通过系统函数GetProcAddress获取组件ntdll.dll的接口RtlGetNtVersionNumbers,基于接口RtlGetNtVersionNumbers获取用于获取Windows系统版本号的系统API函数的内存地址,得到用于获取Windows系统版本号的系统API函数;S303:通过用于获取Windows系统版本号的系统API函数,获得Windows系统的版本号;S304:结合当前系统时间,使用Md5算法对获得的版本号计算HASH值,将计算得到的HASH值作为密钥;S305:使用加密算法TEA,同时结合计算得到的秘钥对获取的时间函数的头代码进行加密,然后加加密后的头代码上传至后台服务器。结合第一方面,在第三种可能的实现方式中,获取所述时间函数timeGetTime的头代码的步骤包括:S211:获取时间函数timeGetTime所在winmm.dll的句柄;S212:调用系统函数GetProcAddress获取时间函数timeGetTime在winmm.dll中的内存地址;S213:基于获取的内存地址,读取时间函数timeGetTime开头10个字节的代码,得到时间函数timeGetTime的头代码。结合第一方面,在第四种可能的实现方式中,获取时间函数GetTickCount的头代码的步骤包括:S221:获取时间函数GetTickCount所在kernel32.dll的句柄;S222:调用系统函数GetProcAddress获取时间函数GetTickCount在kernel32.dll中的内存地址;S223:基于获取的内存地址,读取时间函数GetTickCount开头10个字节的代码,得到时间函数GetTickCount的头代码。结合第一方面,在第五种可能的实现方式中,获取时间函数QueryPerformanceCounter的头代码的步骤包括:S231:获取时间函数QueryPerformanceCounter在kernel32.dll中的句柄;S232:调用系统函数GetProcAddress获取时间函数QueryPerformanceCounter在kernel32.dll中的内存地址;S233:基于获取的内存地址,读取时间函数QueryPerformanceCounter开头10个字节的代码,得到时间函数QueryPerformanceCounter的头代码。结合第一方面,在第六种可能的实现方式中,获取时间函数GetSystemTime的头代码的步骤包括:S241:获取时间函数GetSystemTime所在kernel32.dll的句柄;S242:调用系统函数GetProcAddress获取时间函数GetSystemTime在kernel32.dll中的内存地址;S243:基于获取的内存地址,读取时间函数GetSystemTime开头10个字节的代码,得到时间函数GetSystemTime的头代码。本专利技术第二方面提供一种存储介质,该存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:获取程序运行时所调用的Windows系统的时间函数,所述时间函数包括timeGetTime、GetTickCount、QueryPerformanceCounter和GetSystemTime中的一种或多种;获取时间函数的头代码;将获取的时间函数的头代码加密后上传至后台服务器;后台服务器将接收时间函数的头代码与自身存储的原始时间函数的头代码进行比对,若相同,则判断程序未被加速,若不同,则判断程序被加速。本专利技术第三方面提供一种电子设备,所述电子设备包括:第一获取单元,其用于获取程序运行时所调用的Windows系统的时间函数,所述时间函数包括timeGetTime、GetTickCount、QueryPerformanceCounter和GetSystemTime中的一种或多种;第二获取单元,其用于获取时间函数的头代码;上传单元,其用于将获取的时间函数的头代码加密后上传至后台服务器;比对单元,其用于后台服务器将接收时间函数的头代码与自身存储的原始时间函数的头代码进行比对,若相同,则判断程序未被加速,若不同,则判断程序被加速。本专利技术第四方面提供一种程序被加速检测系统,包括:第一获取模块,其用于获取程序运行时所调用的Windows系统的时间函数,所述时间函数包括timeGetTime、G本文档来自技高网...

【技术保护点】
1.一种程序被加速检测方法,用于对运行于Windows系统中的程序进行检测,其特征在于,包括以下步骤:/n获取程序运行时所调用的Windows系统的时间函数,所述时间函数包括timeGetTime、GetTickCount、QueryPerformanceCounter和GetSystemTime中的一种或多种;/n获取时间函数的头代码;/n将获取的时间函数的头代码加密后上传至后台服务器;/n后台服务器将接收时间函数的头代码与自身存储的原始时间函数的头代码进行比对,若相同,则判断程序未被加速,若不同,则判断程序被加速。/n

【技术特征摘要】
1.一种程序被加速检测方法,用于对运行于Windows系统中的程序进行检测,其特征在于,包括以下步骤:
获取程序运行时所调用的Windows系统的时间函数,所述时间函数包括timeGetTime、GetTickCount、QueryPerformanceCounter和GetSystemTime中的一种或多种;
获取时间函数的头代码;
将获取的时间函数的头代码加密后上传至后台服务器;
后台服务器将接收时间函数的头代码与自身存储的原始时间函数的头代码进行比对,若相同,则判断程序未被加速,若不同,则判断程序被加速。


2.如权利要求1所述的一种程序被加速检测方法,其特征在于:
所述时间函数用于所述程序查询当前系统时间以及程序运行时间;
当后台服务器将接收时间函数的头代码与自身存储的原始时间函数的头代码进行比对时,基于程序运行时所调用的时间函数,后台服务器将自身存储的该时间函数的头代码,与接收的该时间函数的头代码进行比对。


3.如权利要求1所述的一种程序被加速检测方法,其特征在于:所述将获取的时间函数的头代码加密后上传至后台服务器,具体步骤为:
S301:加载组件ntdll.dll,所述组件ntdll.dll中存储有用于获取Windows系统版本号的系统API函数;
S302:通过系统函数GetProcAddress获取组件ntdll.dll的接口RtlGetNtVersionNumbers,基于接口RtlGetNtVersionNumbers获取用于获取Windows系统版本号的系统API函数的内存地址,得到用于获取Windows系统版本号的系统API函数;
S303:通过用于获取Windows系统版本号的系统API函数,获得Windows系统的版本号;
S304:结合当前系统时间,使用Md5算法对获得的版本号计算HASH值,将计算得到的HASH值作为密钥;
S305:使用加密算法TEA,同时结合计算得到的秘钥对获取的时间函数的头代码进行加密,然后加加密后的头代码上传至后台服务器。


4.如权利要求1所述的一种程序被加速检测方法,其特征在于:获取所述时间函数timeGetTime的头代码的步骤包括:
S211:获取时间函数timeGetTime所在winmm.dll的句柄;
S212:调用系统函数GetProcAddress获取时间函数timeGetTime在winmm.dll中的内存地址;
S213:基于获取的内存地址,读取时间函数timeGetTime开头10个字节的代码,得到时间函数timeGetTime的头代码。


5.如权利要求1所述的一种程序被加速检测方法,其特征在于:获取时间函数GetTickCount的头代码的步骤包括:
S221:获取时间函数GetTickCount所在kernel32.dll的句柄;
S222:调用系统函数GetProcAddress获取时间函数GetTickCount在kernel32.dll中的内存地址;
S223:基于获取的内存地址,读取时间函数GetTickCount开头10个字节的代码,得到时间函数GetTickCount的头代码。


6...

【专利技术属性】
技术研发人员:周志刚
申请(专利权)人:武汉斗鱼网络科技有限公司
类型:发明
国别省市:湖北;42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1