由于守望者加速器(以下简称"本软件")曾在某论坛发布过本软件的运行机制,所以考虑到有可能存在其他类似的软件存在, 本处提供可以检测此类类似软件通用的检测方法(因其软件性质的唯一特性:就是修改系统的运行频率,检测系统运行频率是否被更改即可): //检查本软件中的宇宙变速/变速方式t/变速方式b/变速方式c/变速方式e/变速方式f/变速方式z等用IsTimeFunctionHooked()函数; //本函数不限于检测本软件,也适用于检测其他类似的更改系统运行频率的软件. //检查改变系统运行频率的函数如果返回结果为TRUE则频率已经被修改;本函数为驱动代码,适用xp-win10; BOOLEAN IsTimeFunctionHooked() { PUCHAR pfnKeQueryPerformanceCounter = (PUCHAR)GetNtosFunctionAddress(L"KeQueryPerformanceCounter"); PUCHAR pfnKeUpdateSystemTime = (PUCHAR)GetNtosFunctionAddress(L"KeUpdateSystemTime"); if(pfnKeQueryPerformanceCounter && MmIsAddressValid(pfnKeQueryPerformanceCounter)) { #ifdef AMD64 if(*pfnKeQueryPerformanceCounter==0xFF && *(pfnKeQueryPerformanceCounter+1)==0x25) { return TRUE; } #else if(*pfnKeQueryPerformanceCounter==0xE9) { return TRUE; } #endif } if(pfnKeUpdateSystemTime && MmIsAddressValid(pfnKeUpdateSystemTime)) { #ifdef AMD64 if(*pfnKeUpdateSystemTime==0xFF && *(pfnKeUpdateSystemTime+1)==0x25) { return TRUE; } #else if(*pfnKeUpdateSystemTime==0xE9) { return TRUE; } #endif } return FALSE; } //预防本软件中变速方式a/变速方式g/变速方式x等,用DenyLoadDllSwitch(1)函数; //本函数不限于预防本软件,也适用于预防其他类似的更改运行频率类软件. //由于这几种变速方式需要注入dll模块,所以禁止注入dll模块即可,函数为1则禁止,为0则取消禁止,适用xp-win10; //当然程序也可以通过枚举自身进程的模块来判断是否存在未知模块以判断. DenyLoadDllSwitch(long IsEnable) { UCHAR ba_new[3]={0xC2,0x10,0x00},ba_old[3]={0x8b,0xff,0x55}; PVOID ptr = GetProcAddress(GetModuleHandleA("ntdll.dll"), "LdrLoadDll"); DWORD un; VirtualProtect(ptr, 3, PAGE_EXECUTE_READWRITE, &un); if(IsEnable) { memcpy(ptr,ba_new,3); } else { memcpy(ptr,ba_old,3); } } //另外提供一种检查任何客户端更改运行频率类软件的措施:即通过服务器与客户端的时间差校验; 服务端储存客户端上线时间; 客户端给服务端传输数据时附带上运行经过时间(秒),假如客户端被加快或减慢运行,那么经过时间(秒)会大于或小于服务端中记录客户端时间差. 从而可检查任何客户端更改运行频率类软件. 游戏守望者软件提供