游戏守望者软件相关原理检验方案及代码

当前位置:首页 > 教程中心
游戏守望者软件相关原理检验方案及代码
发布于:2018/1/1 14:54:15

游戏守望者软件(以下简称"本软件")

 

 

 

原理:

 

本软件的原理很简单:即更改系统运行频率(或者说是系统时间转动速度)以达到系统运行速度加快或者减慢.

软件核心代码均为驱动代码,代码在Ring0下作业,主要核心函数KeQueryPerformanceCounter和KeUpdateSystemTime,(包括宇宙变速1-7,S,变速方式B,C,E,F,T均采用上述函数实现),

由于Ring0下相关资料较少,所以在互联网上搜索到的资料也寥寥无几.不过最近几年可能在少部分网站搜索到了.

至于剩下的其他的变速方式原理均采用Ring3下和"变速齿轮"同样的原理(变速齿轮原理可直接搜索,早已公开).

 

 

 

检验方案及代码:

 

由于时代的发展,网络上已存在很多网络游戏程序,但是由于其开发团队开发时并未考虑到系统频率更改可能会导致一系列问题,所以他们并没有装载校验系统频率的相关措施.

而且本软件也曾在某论坛发布过本软件的大部分源代码以及近期由于在网络上发现有多个与本软件原理大致同样类型的同类软件,还有很多以本软件名义出现的假冒软件出现,

本软件考虑到以上综合因素,本软件特别提供可以检测此类及类似软件通用的检测方法及源代码以提供有需要的组织使用.代码简洁有效,全部方案及代码如下:

 

(因该原理的唯一特性:就是修改系统的运行频率,所以直接检测系统运行频率是否被更改即可):

 

//检查本软件中的宇宙变速1-7/宇宙变速S/变速方式t/变速方式b/变速方式c/变速方式e/变速方式f/变速方式z等都可以用IsTimeFunctionHooked()函数来判断; 

//特别注意:本函数为通用检测方法,并不限于检测本软件,也同样适用于检测其他类似的更改系统运行频率的软件. 

//检查改变系统运行频率的函数如果返回结果为TRUE则频率已经被修改;本函数为Windows驱动代码,C语言函数,适用windows xp至windows10的全部windows系统; 

 

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);

}

}

 

//另外提供一种检查任何客户端更改运行频率类软件的措施:即通过服务器与客户端的时间差校验; 

服务端储存客户端上线时间; 

客户端给服务端传输数据时附带上运行经过时间(秒),

假如客户端被加快或减慢运行,那么经过时间(秒)会大于或小于服务端中记录客户端时间差. 

从而可检查任何客户端更改运行频率类软件.

(以上仅提供的是简单思路,具体代码实现要根据开发者自主思路自行编写)

从互联网90%以上的网络游戏们看来,大部分都是采用此类方案,因为其确实稳定,有效.

 

 

 

以上由游戏守望者软件提供 




上一篇:游戏守望者加速器驱动安装失败解决办法

下一篇:没有了!

免责声明:本站部分素材图片源于网络若侵犯了您的权益请联系我们删除!
特别警告:本软件禁止与任何多人联网在线网络游戏及网络游戏私服一同使用,否则会导致游戏账户被封停.网络游戏厂商方可点击上侧用前必读可找到检查本软件存在或校验系统运行频率是否更改的方法,已提供源代码.

游戏守望者软件 计算机软件著作权登记号:2014SR112644
©2018 yxswz.com 守望者加速器