vc ++ 实现检测变速齿轮,变速精灵, 变速类辅助工具

来源:互联网 发布:h3c acl 端口 编辑:程序博客网 时间:2024/04/28 08:09

因为项目需要,我需要检测出变速类辅助工具正在对项目程序进行加速。从网上找了很多资料,有很多高手提出HOOK API等解决方案。本人小菜一枚,看得不太明白,经过一番尝试,找到了另外一个方式来实现目的。


首先,我看了一位高手对变速齿轮的分析,原文地址:http://tieba.baidu.com/p/3127683095

他说变速齿轮主要对GetTickCount() 和 timeGetTime() 进行了修改,于是我想到Sleep函数是直接与操作系统打交道的(具体的原理我不清楚,有高手看到还请指教),它应该不会受到影响,也就是说Sleep(1000),基本上也就是挂起线程1000ms。于是我得到一个启发,在时间校验线程里首先通过GetTickCount()得到一个时间start,然后Sleep(1000),接下来再次通过GetTickCount()得到一个时间end,这两个时间相减(end-start)应该就是Sleep(1000)中过去的时间,单位毫秒。如果相减的结果超过了1100毫秒(我主要考虑到一个容错值)那么就可以判定启用了变速齿轮,我这里主要是检测加速,所以这样就行了。减速也是一样的,非常的容易。


这个方法我测试了Win7/8 和xp系统下的主流变速工具,都可以检测出来。如果有高手知道原理或者看出什么问题,请一定指教一下,谢谢!


附上时间校验线程函数的代码:

UINT TimeCheckThread(LPVOID lpParament){CMyDlg *pThis = (CMyDlg *)lpParament;DWORD dwStart = GetTickCount();Sleep(1000);DWORD dwEnd = GetTickCount();if(dwEnd-dwStart>1100) // 加速超过1.1倍{double *pTimes = new double;*pTimes = (dwEnd-dwStart)/1000.0;SendMessage(pThis->m_hWnd,UM_TIMEABNORMAL,(WPARAM)pTimes,0);// 校验不通过}return 0; }

运行效果:


1 0
原创粉丝点击