首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检测鼠标点击是合法的还是自动的?

如何检测鼠标点击是合法的还是自动的?
EN

Stack Overflow用户
提问于 2011-02-23 21:52:31
回答 12查看 12.6K关注 0票数 8

如何知道鼠标点击是否是模拟的?当鼠标点击时,通过程序或真正的鼠标设备发送

..。我正在为游戏编程一个系统检测,以避免机器人,自动点击等,只接受合法的鼠标点击

EN

回答 12

Stack Overflow用户

发布于 2011-02-23 22:29:28

这有点取决于你正在编写的应用程序的类型,但如果你可以,我会观察光标的移动,而不是点击。人的鼠标移动有不均匀的速度,反应时间,不精确(点击按钮的不同坐标,等等)。

此外,您可以通过随机要求很难编写脚本的交互来保护gui不受机器人的攻击。例如:如果脚本依赖于按钮总是在同一位置,我会确保在保持直观的同时,每次弹出的对话框都应该略有不同。

否则:没有办法检测鼠标是真的还是模拟得很好的。Windows HID/MacOS/Linux驱动层抽象了鼠标、TrackPens、TrackBalls、绘图板、触摸屏之间的区别……当然还有脚本-鼠标...

票数 11
EN

Stack Overflow用户

发布于 2011-02-23 22:29:52

虽然这篇博文本身是关于一个不同的问题,但我建议您参考Raymond Chen的优秀Old New Thing。在这篇特定的博客文章中,他谈到了进入应用程序的消息参数的有效性,但也提出了以下观点:

讨论消息发送者欺骗和欺骗你的可能性是没有意义的,因为(1)你的程序应该像真实的菜单消息一样响应虚假的菜单消息,因为(2)没有办法知道你被骗了。要发现说谎,你必须能够读懂给你发消息的程序员的心态。

从本质上讲,无论鼠标单击是如何生成的,您都应该将鼠标单击作为鼠标单击进行响应。

票数 7
EN

Stack Overflow用户

发布于 2011-02-24 04:46:31

mouse keys是模拟鼠标输入还是合法的?模拟鼠标输入的目的是让它们看起来与真实的鼠标输入完全一样。如果模拟正在执行它的工作,那么您的工作是不可能的,。对不起,这是软件的福与祸。这里有一些更不完美的想法:

  1. 使用GetKeyboardState并验证按钮状态是否正确。如果消息伪造者正在使用PostMessage,他们很可能不会设置键盘状态,这将表明是伪造的。
  2. 如果您的目标是正在进行输入模拟的已知应用程序,请检测它们并进行投诉。正如许多人所建议的那样,这对许多reasons.
  3. Fuzzy逻辑来说一点也不完美。

你需要有创造力,找出模拟事件和真实事件之间的区别,,因为没有通用的答案。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5091780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档