利索能及
我要发布
收藏
专利号: 2018111631354
申请人: 武汉斗鱼网络科技有限公司
专利类型:发明专利
专利状态:已下证
更新日期:2024-09-06
缴费截止日期: 暂无
联系人

摘要:

权利要求书:

1.一种基于内存映射文件检测进程实例个数的方法,其特征在于,包括:定义将进程写入内存映射文件的数据存储格式,所述数据存储格式中包括以下信息:特征码、所述进程的进程唯一标识和加密KEY,所述特征码为一段隐藏字符,所述特征码表示所述内存映射文件用于检测程序多开实例,所述加密KEY用于加密所述进程的进程唯一标识;

获取所述进程的进程唯一标识,并将所述进程的进程唯一标识进行加密,得到所述加密KEY和加密后的进程唯一标识,所述加密后的进程唯一标识随着开机状态的变化而变化;

创建所述内存映射文件,并依据所述数据存储格式,将所述特征码写入所述内存映射文件的头端,并将所述加密KEY和所述进程的进程唯一标识写入所述内存映射文件;

当需要检测当前进程实例的个数时,根据所述数据存储格式读取所述内存映射文件,并解密所述加密后的进程唯一标识,得到解密后的进程唯一标识,所述解密后的进程唯一标识的个数为所述当前进程实例的个数。

2.根据权利要求1所述的方法,其特征在于,所述获取所述进程的进程唯一标识,并将所述进程的进程唯一标识进行加密,得到所述加密KEY和加密后的进程唯一标识,包括:通过调用应用程序编程接口API函数GetCurrentProcessId()获取所述进程的进程唯一标识;

根据 winlogon.exe进程的进程唯一标识和当前时间戳信息得到所述加密KEY,并根据所述加密KEY对所述进程的进程唯一标识进行加密,得到所述加密后的进程的唯一标识,所述win1ogon.exe进程为开机启动的进程。

3.根据权利要求2所述的方法,其特征在于,所述根据 winlogon.exe进程的进程唯一标识和当前时间戳信息得到所述加密KEY,并根据所述加密KEY对所述进程的进程唯一标识进行加密,得到所述加密后的进程的唯一标识包括:通过调用API函数Time()获取所述当前时间戳信息;

将所述当前时间戳信息和所述win1ogon.exe进程的进程唯一标识作为API函数SHA‑1. Create()的输入,以得到所述加密KEY;

将所述进程的进程唯一标识和所述加密KEY作为加密算法 Blowfish的加密接口Blowfish.encrypt()的输入,以输出初加密数据;

将所述初加密数据和所述加密KEY作为加密算法TEA的加密接口TEA.encrypt()的输入,以输出次加密数据,所述次加密数据为所述加密后的进程的进程唯一标识。

4.根据权利要求3所述的方法,其特征在于,所述创建所述内存映射文件,并依据所述数据存储格式,将所述特征码写入所述内存映射文件的头端包括:通过调用API函数 CreateFileMapping()创建所述内存映射文件;通过调用API函数 MapviewOfFile()获取到所述内存映射文件的头端;通过调用API函数的内存拷贝函数memcpy()将所述特征码拷贝到所述内存映射丈件的头端。

5.根据权利要求4所述的方法,其特征在于,所述解密所述加密后的进程唯一标识包括:

将所述加密后的进程的进程唯一标识和所述加密KEY作为加密算法TEA的解密接口 TEA.decrypt的输入,以输出所述次加密数据;

将所述次加密数据和所述加密KEY作为加密算法  Blowfish的解密接口 Blowfish.decrypt的输入,以输出所述进程的进程唯一标识。

6.根据权利要求5所述的方法,其特征在于,所述方法还包括:根据所述进程的进程唯一标识判断所述进程是否处于卡死状态。

7.根据权利要求6所述的方法,其特征在于,所述根据所述进程的进程唯一标识判断所述进程是否处于卡死状态包括:

通过调用API函数 GetModuleHandle得到系统模块 ntdll.dl1的模块句柄;

根据所述系统模块 ntdll.d1l的模块句柄获取系统函数NtQuerylnformationProcess,以根据所述系统函数NtQuerylnformationProcess获取所述进程的进程基本信息;

通过调用API函数OpenProces打开所述进程,并返回所述进程的进程句柄;

定义存储变量,所述存储变量用于存储进程信息,所述进程信息包括所述进程句柄和所述进程基本信息;

根据所述进程信息判断所述进程的状态;当所述进程的状态为 STATUS_PENDING时,则确定所述进程的状态为卡死状态。

8.一种检测装置,其特征在于,包括:定义单元,用于定义将进程写入内存映射文件的数据存储格式,所述数据存储格式中包括以下信息:特征码、所述进程的进程唯一标识和加密KEY,所述特征码为一段隐藏字符,所述特征码表示所述内存映射文件用于检测程序多开实例,所述加密KEY用于加密所述进程的进程唯一标识;

加密单元,用于获取所述进程的进程唯一标识,并将所述进程的进程唯一标识进行加密,得到所述加密KEY和加密后的进程唯一标识,所述加密后的进程唯一标识随着开机状态的变化而变化;

创建单元,用于创建所述内存映射文件,并依据所述数据存储格式,将所述特征码写入所述内存映射文件的头端,并将所述加密KEY和所述进程的进程唯一标识写入所述内存映射文件;

解密单元,用于当需要检测当前进程实倒的个数时,根据所述数据存储格式读取所述内存映射文件,并解密所述加密后的进程唯一标识,得到解密后的进程唯一标识,所述解密后的进程唯一标识的个数为所述当前进程实例的个数。

9.一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行如权利要求1‑7任意一项所述的方法。