我用一种通俗易懂的语言解答外挂和鼠标宏两者的关系。
都知道微信等平台有个记录运动步数的功能吧。
这个记录运动步数是有外挂的。外挂可以直接改步数的数值,但是这种修改方法会被系统检测出来。
你试想一下,你刚才还是0步,过了几秒钟突然多了1000步,这合理吗。显然不合理。所以系统判定你作弊了。
那么还有另一种作弊方法。那就是把手机绑在自制的简易机械上。让它一直移动,模拟人类走路的振幅,这种作弊方法是完全无敌的,系统根本检测不出来。因为完全无法判断走路的是真人还是机械。
除非你蠢到7*24不间断走,系统可能判断出你异常(毕竟正常人谁不吃饭不睡觉24小时一直走路)
鼠标宏也是这个原理,完全模拟鼠标操作,根本从根源上就无法判断是人类操作还是宏操作。
所以这根本就是无解的问题,怎么检测?
因为理论上不可检测。
即使是有些答案里写的全盘扫描也是没用的,因为这个东西是可以完全不依赖软件的。比如我完全可以用机械手臂控制一只鼠标。
当然实际上完全不用这么麻烦,我们做个听话的鼠标就行了,这个鼠标甚至可以没有激光传感器或者滚轮,只是按照我们的意愿把移动的坐标传递给电脑就行了。
神马?很难?哪有那么难,我来教你做个简单的。
打开淘宝,搜Arduino leonardo或者Arduino pro micro。
其中leonardo长这个样,适合初学者。
pro micro要小得多,适合拿来做成实用的东西。
都很便宜,2,30块钱就有。
买回来之后插上电脑,再到Microsoft store里下载一个Arduino IDE
当然是免费开源的。
然后设置一下你的leonardo或者micro pro的端口和开发板类型,这里不具体说了,菜单里自己选一下。
然后输入以下程序
#include "Mouse.h" void loop() { Mouse.move(0,-10); delay(5000); }
确认无误之后点击上传,上传到你的开发板里。然后开发板会自动重启,重启之后你就可以在设备管理器里看到一个新的“鼠标”了。
我们的“鼠标”也会开始工作,上面的程序是每隔5秒向下移动10个点。
注意是10个物理点,而不是10个像素。如果是100DPI的鼠标,相当于下移了0.1英寸。
具体移动多少个像素看你鼠标速度和加速度的设置。如果鼠标速度设置是中间且没有加速度的话,那就是10个像素。
顺便说一下,这只“鼠标”真的就是一只鼠标,它可以独立工作的。不需要驱动(能用HID就可以),所以你把它插在其他的电脑上,mac上手机上甚至游戏机上都是可以正常动的。
也不需要任何额外的软件,刚才那个IDE就是刷固件的,刷完固件就跟它没关系了。
当然你要写新的固件还是得拿它写。
这个东西只是一个简单得演示,你要想实际用呢,还是有一些问题的。比如跟现有鼠标联动,但这不过也不是什么大事,最简单粗暴的就是把现有鼠标的左键的线路直接改成我们的Arduino鼠标。甚至,你直接把Arduino做到现有的鼠标内部也不是什么大不了的事情。(看见pro micro的身材了没?)
甚至你也可以用键盘来触发,这就更简单了。
如何?
所以你全盘扫描有个P用啊。硬件级别的宏你根本分不清这个移动到底是来自宏还是人。
当然你可以说我来检测Arduino,你确定你不是再搞笑?Arduino社区还不打死你:怎么着?我平常玩arduino你就要封我号?逗我呢?
实际上这么做也没有意义,可以模拟HID设备的何止一个Arduino。再者说何况Arduino是开源的,USB的信息我改一下嘛,我可以给你改到妈都不认识。
那就没有任何办法可以检测了吗?
也不是,最近大火的深度学习可以用来解决这个问题,通过观察鼠标是否有固定移动模式来判断是否有鼠标宏参与其中。
但是啊,深度学习本身就有个准确率的问题,何况鼠标宏千差万别,人家自己做的你上哪去知道人家的模式。而且我完全可以对抗性的加入一些随机移动,那就更没法分辨了。
所以,说实在的,arduino到底能做物理外挂吗?
当然能,效果还不错。
只不过吧,Arduino可能比游戏好玩,这位兄台我看你骨骼清奇,要不要考虑一下加入我们大Arduino神教?
诶~光大的知友与fps玩家们,我告诉你们我第一次听说鼠标宏就想到的一个
绝佳的作弊方法
叮~全自动鼠标垫~
(相像一下多啦A梦掏出东西的样子)
你不是不让鼠标宏嘛,可以嘛,
1,写一套程序,按鼠标时启动
2,弄一个迷你的自动车床
3,操作台板上钉个鼠标垫(赛博朋克风)
4,程序输入
5,让鼠标垫按照压枪的方向反向移动。。
诶,我这可完全是独立系统,除非我自爆,否侧我把机箱寄到游戏厂总部他们都没法。
(雾)
目前检测鼠标宏的主要几个难点:
1、权限问题。
正常来说,一款游戏,在系统中不应有过高的权限。一般能够允许一款游戏及其反作弊功能,扫描当前正在运行的进程,就已经够给它面子了。若想进一步获取更细节的信息,那么很可能杀毒软件那一关就过不去。
2、宏和驱动的判定。
假设游戏的反作弊,检测到系统中有运行一款鼠标驱动,这款鼠标驱动有宏的功能,甚至能检测到宏的内容。那么,如何认定这个宏就一定是针对这款游戏的“外挂”?而不是机主用来做其他事情的?
简单来说,我就有很多鼠标和键盘的宏,主要用在开发软件时自动测试用;而我妻子也有很多宏,是做影视后期用的。我相信许多用电脑办公的人士都会善加利用鼠标和键盘宏的。
难道游戏要排除这些用户么?请不要说“开启游戏前关闭驱动”这种事情,这是不合理的。
(之前有游戏要求我关闭按键精灵,这也就算了,因为姑且按键精灵不是那种驱动级别的东西,关闭了也没什么损失。鼠标驱动可是还附带了很多其他功能的。)
3、鼠标内置宏。
有些游戏鼠标有内置存储,可以将宏和配置存在鼠标内部,以便一些使用者,使用自己的键鼠和其他人的电脑进行游戏,典型的例如一些对战游戏的赛事。
这种情况下,宏完全是从鼠标发出来的信号,没有任何驱动或软件的参与,反作弊功能无法通过上述方法判定。
4、行为的判定。
就以“压枪”来说,最简单的宏,就是每次开枪后用一条命令自动下移鼠标N个像素——这还是很好判定的,因为这个下移“没有过程”,并且是“精确”的下移。
那么既然“没有过程”,给它加上过程就好。高端鼠标的刷新率最高有1000Hz,而低端鼠标很可能只有100Hz。那么对于射速600的枪(每秒10发),将压枪宏的移动步骤变为10步,每步间隔10毫秒,那么就不再能够因为“没有过程”而判定为压枪宏,否则就会误伤很多使用低端鼠标的用户。
既然下移太过“精确”,那么就只要使用随机函数增加一些扰动即可。大多数情况这种宏不必十分精确地下压,即使左右偏移几个像素都不是大问题。那么这个“压枪宏”,在反作弊系统中的判定也不过和高端玩家的操作类似而已,无法作为判定依据。
5、其他的反作弊办法。
为枪械的后坐力设计一个随机的偏移量,即有时向左偏,有时向右偏,那么即可在相当程度上使压枪宏无效。但是这就带来另一个问题——高手也没办法压枪了。
根据某些研究显示,眼手反射弧最快能有200毫秒以内,算上其他各种延迟,就算250毫秒吧,这就意味着射速240以上的枪,只要应用了随机的左右偏移后坐,高手也没办法压枪。
另外这也与枪械的设定不符——毕竟游戏中大部分枪械都是仿照真实枪械设定的,无缘无故地为那些枪增加缺点,对于游戏不利。
为了增加枪械的多样性,必定有些枪的后坐力会比较小,或者后坐比较规律,那么这些枪就会成为压枪宏使用者的目标,而无法彻底避免压枪宏。
看的多了,自然就没啥感觉了,只是有时候会像幻灯片突然在你眼前闪一下滋味很难受。我2014年进医院到现在送走的人得几百人了,很多癌症晚期患者化疗后都来中医科住院辅助治疗,肝癌、肺癌死亡率太高了,去年有一个大学生,刚本科毕业准备考研,成绩优异,查出来白血病,家庭困难,在水滴筹筹钱,2个月人就走了,他母亲现在在工地打工还借款。43岁男,肝癌晚期术后复发上海医院拒收,17年底在我们科住院治疗,撑到了19年底。45岁,女,肺腺癌晚期,在上海瑞金做化疗,然后回老家在我们科用中药,现在人状态还可以,没有疼痛等症状。我亲舅鳞癌晚期,只撑了一年。
目前只有癌症早期的治愈率才高,中期极低,晚期没救。胰腺癌、肺癌、肝癌、淋巴癌死亡率极高。胃癌、直肠癌、乳腺癌、前列腺癌、膀胱癌、甲状腺癌死亡率相对低一点只要有钱就能多活一段时间或者治愈。