CN109078331B - 模拟按键检测方法、装置、计算机设备及存储介质 - Google Patents

模拟按键检测方法、装置、计算机设备及存储介质 Download PDF

Info

Publication number
CN109078331B
CN109078331B CN201810798848.1A CN201810798848A CN109078331B CN 109078331 B CN109078331 B CN 109078331B CN 201810798848 A CN201810798848 A CN 201810798848A CN 109078331 B CN109078331 B CN 109078331B
Authority
CN
China
Prior art keywords
target application
application program
window
handle
function
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201810798848.1A
Other languages
English (en)
Other versions
CN109078331A (zh
Inventor
黄国友
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangzhou Huaduo Network Technology Co Ltd
Original Assignee
Guangzhou Huaduo Network Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Guangzhou Huaduo Network Technology Co Ltd filed Critical Guangzhou Huaduo Network Technology Co Ltd
Priority to CN201810798848.1A priority Critical patent/CN109078331B/zh
Publication of CN109078331A publication Critical patent/CN109078331A/zh
Application granted granted Critical
Publication of CN109078331B publication Critical patent/CN109078331B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/70Game security or game management aspects
    • A63F13/75Enforcing rules, e.g. detecting foul play or generating lists of cheating players

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Business, Economics & Management (AREA)
  • Computer Security & Cryptography (AREA)
  • General Business, Economics & Management (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

本发明公开了一种模拟按键检测方法、装置、计算机设备及存储介质,属于网络技术领域。本发明通过将目标应用程序的根窗口句柄和当前拥有焦点控件的窗口的句柄比较,判断该目标应用程序中是否存在模拟按键操作,能够检测到在该目标应用程序运行的同时,是否也运行了已知外挂应用程序和一些不知名的外挂应用程序,大大提高了外挂应用程序检测的准确性。

Description

模拟按键检测方法、装置、计算机设备及存储介质
技术领域
本发明涉及网络技术领域,特别涉及一种模拟按键检测方法、装置、计算机设备及存储介质。
背景技术
随着网络技术的高速发展,用户对网络游戏的要求越来越高,网络游戏通过用户与用户之间的互动和对抗的方式,实现娱乐的目的。用户在通过网络游戏娱乐自身的同时,也可能获得相应的积分等奖励,因此,游戏外挂应用程序也由此出现。外挂,指的是利用计算机技术,修改网络游戏应用程序的部分程序,而制作成的作弊程序。通过外挂应用程序,用户无需在计算机设备前对网络游戏软件进行实时操作,就能得到其他用户在短时间内得不到的游戏效果。因此,外挂应用程序严重破坏了网络游戏的公平性,对网络游戏本身和其他用户造成了严重影响。
常用的外挂方式之一是模拟按键,模拟按键是通过改变程序,模拟键盘消息和鼠标消息来对目标应用程序的操作,通过模拟按键的方式进行游戏,可以无需用户操作,在应用程序内自动完成组队、对抗、交任务等一系列对网络游戏的操作,这严重破坏了网络游戏的平衡性。由此,相关技术提出了模拟按键检测方法,可以通过检测当前运行的进程所接收的键鼠消息中,是否携带预设外挂应用程序的标识,如果携带,则确定当前操作是由模拟按键方式触发,而不是人为实现。
然而,上述检测方法中仅能够检测到一些已知外挂应用程序,而一旦用户使用一些不知名的外挂应用程序,则无法实现检测,导致检测的准确性很差。
发明内容
本发明实施例提供了一种模拟按键检测方法、装置、计算机设备及存储介质,可以解决相关技术中模拟按键检测的准确性很差的问题。该技术方案如下:
一方面,提供了一种模拟按键检测方法,该方法包括:
获取目标应用程序的根窗口句柄;
当接收到该目标应用程序的键鼠消息时,获取当前拥有焦点控件的窗口的句柄;
当该目标应用程序的根窗口句柄和该当前拥有焦点控件的窗口的句柄不一致时,向服务器发送模拟按键检测信息,该模拟按键检测信息携带该目标应用程序的用户信息。
在一种可能实现方式中,所述获取目标应用程序的根窗口句柄包括:
通过辅助线程遍历桌面的所有窗口,所述辅助线程用于处理所述目标应用程序的任务;
基于所述桌面的所有窗口,根据所述目标应用程序的标识,获取所述目标应用程序的根窗口句柄。
在一种可能实现方式中,所述获取目标应用程序的根窗口句柄之后,所述方法还包括:
获取所述目标应用程序的窗口过程函数;
子类化所述目标应用程序的窗口过程函数,设置代理窗口过程函数,所述代理窗口过程函数用于替代所述目标应用程序的窗口过程函数,接管向所述目标应用程序发送的所有消息;
基于所述代理窗口过程函数接收所述键鼠消息。
在一种可能实现方式中,所述获取所述目标应用程序的窗口过程函数包括:
基于所述目标应用程序的根窗口句柄,获得所述目标应用程序的窗口过程函数地址;
根据所述目标应用程序的窗口过程函数地址,获得所述目标应用程序的窗口过程函数。
在一种可能实现方式中,所述基于所述代理窗口过程函数接收所述键鼠消息包括:
当通过所述代理窗口过程函数接收到任一消息时,过滤掉所述键鼠消息以外的消息。
在一种可能实现方式中,所述获取当前拥有焦点控件的窗口的句柄之前,所述方法还包括:
创建数组列表,所述数组列表用于保存组合数组项,所述组合数组项由虚拟键值和当前时间点组成,所述虚拟键值用于表示键鼠消息;
设置第一挂钩函数,所述第一挂钩函数用于挂钩所有的消息发送函数;
设置第二挂钩函数,所述第二挂钩函数用于挂钩所有的消息接收函数;
基于所述第一挂钩函数所获取到的第一虚拟键值更新所述数组列表,所述第一虚拟键值用于表示所述消息发送函数所定义的键鼠消息;
当检测到所述第二挂钩函数所获取的第二虚拟键值在更新后的所述数组列表中不存在时,执行所述获取当前拥有焦点控件的窗口的句柄的步骤。
在一种可能实现方式中,
所述基于所述第一挂钩函数所获取到的第一虚拟键值更新所述数组列表包括:
获取所述第一虚拟键值;
获取当前时间点;
基于所述第一虚拟键值和所述当前时间点,获取第一组合数组项;
基于所述第一组合数组项,更新所述数组列表。
一方面,提供了一种模拟按键检测装置,该装置包括:
获取模块,用于获取目标应用程序的根窗口句柄;
该获取模块还用于当接收到该目标应用程序的键鼠消息时,获取当前拥有焦点控件的窗口的句柄;
发送模块,用于当该目标应用程序的根窗口句柄和该当前拥有焦点控件的窗口的句柄不一致时,向服务器发送模拟按键检测信息,该模拟按键检测信息携带该目标应用程序的用户信息。
在一种可能实现方式中,所述获取模块还用于:
通过辅助线程遍历桌面的所有窗口,所述辅助线程用于处理所述目标应用程序的任务;
基于所述桌面的所有窗口,根据所述目标应用程序的标识,获取所述目标应用程序的根窗口句柄。
在一种可能实现方式中,所述装置还包括:
所述获取模块还用于获取所述目标应用程序的窗口过程函数;
子类化模块,用于子类化所述目标应用程序的窗口过程函数,设置代理窗口过程函数,所述代理窗口过程函数用于替代所述目标应用程序的窗口过程函数,接管向所述目标应用程序发送的所有消息;
接收模块,用于基于所述代理窗口过程函数接收所述键鼠消息。
在一种可能实现方式中,所述获取模块还用于:
基于所述目标应用程序的根窗口句柄,获得所述目标应用程序的窗口过程函数地址;
根据所述目标应用程序的窗口过程函数地址,获得所述目标应用程序的窗口过程函数。
在一种可能实现方式中,所述接收模块用于:
当通过所述代理窗口过程函数接收到任一消息时,过滤掉所述键鼠消息以外的消息。
在一种可能实现方式中,所述装置还包括:
创建模块,用于创建数组列表,所述数组列表用于保存组合数组项,所述组合数组项由虚拟键值和当前时间点组成,所述虚拟键值用于表示键鼠消息;
设置模块,用于设置第一挂钩函数,所述第一挂钩函数用于挂钩所有的消息发送函数;
所述设置模块,还用于设置第二挂钩函数,所述第二挂钩函数用于挂钩所有的消息接收函数;
更新模块,用于基于所述第一挂钩函数所获取到的第一虚拟键值更新所述数组列表,所述第一虚拟键值用于表示所述消息发送函数所定义的键鼠消息;
执行模块,用于当检测到所述第二挂钩函数所获取的第二虚拟键值在更新后的所述数组列表中不存在时,执行所述获取当前拥有焦点控件的窗口的句柄的步骤。
在一种可能实现方式中,所述更新模块用于:
获取所述第一虚拟键值;
获取当前时间点;
基于所述第一虚拟键值和所述当前时间点,获取第一组合数组项;
基于所述第一组合数组项,更新所述数组列表。
一方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现所述模拟按键检测方法所执行的操作。
一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现所述模拟按键检测方法所执行的操作。
本发明通过将目标应用程序的根窗口句柄和当前拥有焦点控件的窗口的句柄比较,判断该目标应用程序中是否存在模拟按键操作,能够检测到在该目标应用程序运行的同时,是否也运行了已知外挂应用程序和一些不知名的外挂应用程序,大大提高了外挂应用程序检测的准确性。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种模拟按键检测方法的流程图;
图2是本发明实施例提供的一种模拟按键检测方法的流程图;
图3是本发明实施例提供的一种排除内部模拟按键方法的流程图;
图4是本发明实施例提供的一种模拟按键检测装置的结构示意图;
图5是本发明实施例提供的一种终端的结构框图;
图6是本发明实施例提供的一种服务器的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
图1是本发明实施例提供的一种模拟按键检测方法的流程图,参见图1,该实施例具体包括:
101、获取目标应用程序的根窗口句柄。
102、当接收到该目标应用程序的键鼠消息时,获取当前拥有焦点控件的窗口的句柄。
103、当该目标应用程序的根窗口句柄和该当前拥有焦点控件的窗口的句柄不一致时,向服务器发送模拟按键检测信息,该模拟按键检测信息携带该目标应用程序的用户信息。
在一些实施例中,该获取目标应用程序的根窗口句柄包括:
通过辅助线程遍历桌面的所有窗口,该辅助线程用于处理该目标应用程序的任务;
基于该桌面的所有窗口,根据该目标应用程序的标识,获取该目标应用程序的根窗口句柄。
在一些实施例中,该获取目标应用程序的根窗口句柄之后,该方法还包括:
获取该目标应用程序的窗口过程函数;
子类化该目标应用程序的窗口过程函数,设置代理窗口过程函数,该代理窗口过程函数用于替代该目标应用程序的窗口过程函数,接管向该目标应用程序发送的所有消息;
基于该代理窗口过程函数接收该键鼠消息。
在一些实施例中,该获取目标应用程序的窗口过程函数包括:
基于该目标应用程序的根窗口句柄,获得该目标应用程序的窗口过程函数地址;
根据该目标应用程序的窗口过程函数地址,获得该目标应用程序的窗口过程函数。
在一些实施例中,该基于该代理窗口过程函数接收该键鼠消息包括:
当通过该代理窗口过程函数接收到任一消息时,过滤掉该键鼠消息以外的消息。
在一些实施例中,该获取当前拥有焦点控件的窗口的句柄之前,该方法还包括:
创建数组列表,该数组列表用于保存组合数组项,该组合数组项由虚拟键值和当前时间点组成,该虚拟键值用于表示键鼠消息;
设置第一挂钩函数,该第一挂钩函数用于挂钩所有的消息发送函数;
设置第二挂钩函数,该第二挂钩函数用于挂钩所有的消息接收函数;
基于该第一挂钩函数所获取到的第一虚拟键值更新该数组列表,该第一虚拟键值用于表示该消息发送函数所定义的键鼠消息;
当检测到该第二挂钩函数所获取的第二虚拟键值在更新后的该数组列表中不存在时,执行该获取当前拥有焦点控件的窗口的句柄的步骤。
在一些实施例中,该基于该第一挂钩函数所获取到的第一虚拟键值更新该数组列表包括:
获取该第一虚拟键值;
获取当前时间点;
基于该第一虚拟键值和该当前时间点,获取第一组合数组项;
基于该第一组合数组项,更新该数组列表。
上述所有可选技术方案,可以采用任意结合形成本发明的可选实施例,在此不再一一赘述。
图2是本发明实施例提供的一种模拟按键检测方法的流程图,可以应用于任一种计算机设备中,参见图2,该实施例具体包括:
201、通过辅助线程遍历桌面的所有窗口,该辅助线程用于处理该目标应用程序的任务。
在本发明实施例中,当目标应用程序启动后,可以在计算机设备中创建一个辅助线程,该辅助线程用于处理该目标应用程序的后台运行的任务,即用户可以继续使用该目标应用程序,而无需等待该辅助线程处理完该目标应用程序的任务。通过该辅助线程遍历桌面的所有窗口,该所有窗口可以包括打开的该目标应用程序的窗口及其他应用程序的窗口。
202、基于该桌面的所有窗口,根据该目标应用程序的标识,获取该目标应用程序的根窗口句柄。
在本发明实施例中,该目标应用程序的标识用于对该目标应用程序进行唯一标记,该根窗口句柄为对窗口进行唯一标记的内部代码。该桌面的所有窗口的根窗口句柄均携带相应的应用程序的标识,因此,根据该目标应用程序的标识,可以从该桌面的所有窗口的根窗口句柄中,确定该目标应用程序的根窗口句柄。
203、基于该目标应用程序的根窗口句柄,获得该目标应用程序的窗口过程函数地址。
在本发明实施例中,该窗口过程函数地址指的是可以用于对窗口接收到的消息进行处理的函数的存储地址。基于该目标应用程序的根窗口句柄,可以通过反向的方式,获得该目标应用程序的窗口过程函数地址。
需要说明的是,在其他实施例中,还可以通过任一种方式获得该目标应用程序的窗口过程函数地址,本发明在此不做限定。
204、根据该目标应用程序的窗口过程函数地址,获得该目标应用程序的窗口过程函数。
205、子类化该目标应用程序的窗口过程函数,设置代理窗口过程函数。
在本发明实施例中,子类化指的是用一个新的窗口过程函数,管理被子类化的窗口过程函数的过程。将该目标应用程序的窗口过程函数子类化后,用一个新的窗口过程函数,也即是代理窗口过程函数,来代替该目标应用程序的窗口过程函数,此时,该目标应用程序的窗口过程函数不再接收任何消息,而全部转由该代理窗口过程函数接收。
206、当通过该代理窗口过程函数接收到任一消息时,过滤掉该键鼠消息以外的消息。
在本发明实施例中,该代理窗口过程函数接收到原来发往该目标应用程序的窗口过程函数的所有消息时,基于对该代理窗口过程函数的相关设置,使该代理窗口过程函数将除键鼠消息以外的其他消息过滤掉,也即是,最终只剩下键鼠消息,键鼠消息可能是真实的键鼠消息,还可能是由模拟按键操作所触发的键鼠消息,因此,通过该过滤过程,可以大大缩小后续消息的处理量,提高检测效率。
207、通过第一挂钩函数,获取第一虚拟键值和当前时间点,该第一挂钩函数用于挂钩所有的消息发送函数。
在本发明实施例中,在目标应用程序运行时,可以设置第一挂钩函数,该第一挂钩函数用于挂钩所有的消息发送函数,挂钩所有的消息发送函数后,该第一挂钩函数即可获取到发送的所有键鼠消息的虚拟键值,该第一虚拟键值用于表示该消息发送函数所定义的键鼠消息,基于该第一挂钩函数,获取到该第一虚拟键值,同时,每获取到一个该第一虚拟键值,也获取与该第一虚拟键值所对应的时间点,从而基于第一虚拟键值和当前时间点执行后续的数组项获取过程。
208、基于该第一虚拟键值和该当前时间点,获取第一组合数组项。
在本发明实施例中,将获取的该第一虚拟键值和该当前时间点,以【第一虚拟键值,当前时间点】的形式,形成该第一组合数组项。
209、基于该第一组合数组项,更新该数组列表。
在本发明实施例中,该目标应用程序内部也有可能发送模拟键鼠消息,因此,为了避免检测到的是该目标应用程序内部发送的模拟键鼠消息,而造成服务器对该目标应用程序的用户进行误处罚或其他影响,在目标应用程序运行时,创建数组列表,用于排除该目标应用程序内部发送的模拟键鼠消息。该数组列表为固定容量的列表,也即是,该数组列表存储的组合数组项的数量有限,例如,该数组列表最多能够存储256个组合数组项。该数组列表用于保存组合数组项,该组合数组项由虚拟键值和当前时间点组成,例如,该组合数组项的形式为【虚拟键值,当前时间点】,其中,该虚拟键值为用于表示键鼠消息的虚拟代码。
该数组列表中保留有限时间内的有限数量的组合数组项,例如,该数组列表只保留10秒内的组合数组项,超过10秒内的组合数组项则自动删除。
在本发明实施例中,将获取到的该第一组合数组项插入到该数组列表中以更新该数组列表,下面,针对该数组列表的更新过程,作具体介绍:
该更新数组列表的方式以环形队列的方式进行,将该第一组合数组项插入到开始位,以替代开始位中的组合数组项,根据该第一组合数组项中数组的数量,从开始位依次往后对原有的组合数组项进行替代,基于在10秒内保留的组合数组项是有限的,因此,以逆时针环形队列的方式,将第一组合数组项依次替换到结束位后,继续按照逆时针的方式替换原有的组合数组项,同时,根据当前时间点,更新开始位和结束位之间的组合数组项。例如,该数组列表中,最近10秒内有10个组合数组项,当该第一组合数组项中有2个组合数组项时,将该2个组合数组项从开始位,替代最近10秒的10个组合数组项中的前两个;当该第一组合数组项中有12个组合数组项时,将该12个组合数组项从开始位,替代完最近10秒的10个组合数组项后,再从结束位开始,依次替代2个组合数组项。
210、当检测到该第二挂钩函数所获取的第二虚拟键值在更新后的该数组列表中不存在时,获取当前拥有焦点控件的窗口的句柄。
在本发明实施例中,设置第二挂钩函数,该第二挂钩函数用于挂钩所有的消息接收函数,挂钩所有的消息接收函数后,该第二挂钩函数即可获取到接收到的所有键鼠消息的虚拟键值。该第二虚拟键值用于表示该消息接收函数所定义的键鼠消息,基于该第二挂钩函数,获取到该第二虚拟键值。基于该第二虚拟键值,检测更新后的该数组列表中是否存在与该第二虚拟键值一致的虚拟键值,若存在,则证明该第二虚拟键值所对应的该键鼠消息为该目标应用程序内部发送的键鼠消息;若不存在,则证明该第二虚拟键值所对应的该键鼠消息不是为该目标应用程序内部发送的键鼠消息,则通过获取当前拥有焦点控件的窗口的句柄,来检测是否存在不是该目标应用程序内部发送的非正常键鼠消息。该当前拥有焦点控件的窗口指的是光标所在的窗口,也即是,处于桌面顶层的窗口。
基于上述步骤207至210,参见图3,步骤207至210的具体实现过程如下:
第一挂钩函数获取到该目标应用程序的所有消息后,过滤得到键鼠消息,并获取到该键鼠消息对应的第一虚拟键值和当前时间点,基于该第一虚拟键值和当前时间点得到第一组合数组项,将该第一组合数组项插入到数组列表的开始位以对数组列表进行更新,数组列表更新完成后,继续执行原生消息发送函数。
第二挂钩函数获取到该目标应用程序的所有消息后,过滤得到键鼠消息,并获取到该键鼠消息对应的第二虚拟键值和当前时间点,基于该第二虚拟键值和当前时间点得到第二组合数组项,基于该第二组合数组项遍历该数组列表,若该第二组合数组项存在于该数组列表的有效区内,则该第二挂钩函数所对应的键鼠消息为该目标应用程序的内部模拟按键消息,若该第二组合数组项不存在于该数组列表的有效区内,则继续执行原生消息接收函数。
211、当该目标应用程序的根窗口句柄和该当前拥有焦点控件的窗口的句柄不一致时,向服务器发送模拟按键检测信息,该模拟按键检测信息携带该目标应用程序的用户信息。
在本发明实施例中,该目标应用程序的根窗口句柄和该当前拥有焦点控件的窗口的句柄不一致,也即是,该目标应用程序在运行过程中,该目标应用程序的窗口不处于桌面的顶层,因此,该目标应用程序是通过模拟按键接收到相应的键鼠消息,以进行相关操作。此时,向服务器发送模拟按键检测信息,该模拟按键检测信息用于通知服务器该计算机设备发生了模拟按键事件,服务器接收到该模拟按键检测信息后,可以根据该模拟按键检测信息中携带的该目标应用程序的用户信息,通过服务器中存储的预设信息,向该目标应用程序发送处罚指令,以对相关用户做出处罚,例如,禁止该用户使用该目标应用程序;或,取消该用户在设定时间内得到的积分等。
本发明实施例提供的方法,通过将目标应用程序的根窗口句柄和当前拥有焦点控件的窗口的句柄比较,判断该目标应用程序中是否存在模拟按键操作,能够检测到在该目标应用程序运行的同时,是否也运行了已知外挂应用程序和一些不知名的外挂应用程序,大大提高了外挂应用程序检测的准确性。
图4是本发明实施例提供的一种模拟按键检测装置的结构示意图。参见图4,该装置包括:获取模块401和发送模块402。
获取模块401,用于获取目标应用程序的根窗口句柄;
该获取模块401,还用于当接收到该目标应用程序的键鼠消息时,获取当前拥有焦点控件的窗口的句柄;
发送模块402,用于当该目标应用程序的根窗口句柄和该当前拥有焦点控件的窗口的句柄不一致时,向服务器发送模拟按键检测信息,该模拟按键检测信息携带该目标应用程序的用户信息。
在一些实施例中,该获取模块401,还用于:
通过辅助线程遍历桌面的所有窗口,该辅助线程用于处理该目标应用程序的任务;
基于该桌面的所有窗口,根据该目标应用程序的标识,获取该目标应用程序的根窗口句柄。
在一些实施例中,该装置还包括:
该获取模块401,还用于获取该目标应用程序的窗口过程函数;
子类化模块,用于子类化该目标应用程序的窗口过程函数,设置代理窗口过程函数,该代理窗口过程函数用于替代该目标应用程序的窗口过程函数,接管向该目标应用程序发送的所有消息;
接收模块,用于基于该代理窗口过程函数接收该键鼠消息。
在一些实施例中,该获取模块401还用于:
基于该目标应用程序的根窗口句柄,获得该目标应用程序的窗口过程函数地址;
根据该目标应用程序的窗口过程函数地址,获得该目标应用程序的窗口过程函数。
在一些实施例中,该接收模块用于:
当通过该代理窗口过程函数接收到任一消息时,过滤掉该键鼠消息以外的消息。
在一些实施例中,该装置还包括:
创建模块,用于创建数组列表,该数组列表用于保存组合数组项,该组合数组项由虚拟键值和当前时间点组成,该虚拟键值用于表示键鼠消息;
设置模块,用于设置第一挂钩函数,该第一挂钩函数用于挂钩所有的消息发送函数;
该设置模块,还用于设置第二挂钩函数,该第二挂钩函数用于挂钩所有的消息接收函数;
更新模块,用于基于该第一挂钩函数所获取到的第一虚拟键值更新该数组列表,该第一虚拟键值用于表示该消息发送函数所定义的键鼠消息;
执行模块,用于当检测到该第二挂钩函数所获取的第二虚拟键值在更新后的该数组列表中不存在时,执行该获取当前拥有焦点控件的窗口的句柄的步骤。
在一些实施例中,该更新模块用于:
获取该第一虚拟键值;
获取当前时间点;
基于该第一虚拟键值和该当前时间点,获取第一组合数组项;
基于该第一组合数组项,更新该数组列表。
需要说明的是:上述实施例提供的模拟按键检测装置在模拟按键检测时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的模拟按键检测装置与模拟按键检测方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
上述计算机设备可以提供为如图5的终端或如图6的服务器形式,具体说明如下,图5是本发明实施例提供的一种终端500的结构框图。该终端500可以是:智能手机、平板电脑、MP3播放器(Moving Picture Experts Group Audio Layer III,动态影像专家压缩标准音频层面3)、MP5(Moving Picture Experts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。终端500还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
通常,终端500包括有:处理器501和存储器502。
处理器501可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器501可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器501也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器501可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器501还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器502可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器502还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器502中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器501所执行以实现本发明中方法实施例提供的模拟按键检测方法。
在一些实施例中,终端500还可选包括有:外围设备接口503和至少一个外围设备。处理器501、存储器502和外围设备接口503之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口503相连。具体地,外围设备包括:射频电路504、显示屏505、摄像头组件506、音频电路507、定位组件504和电源509中的至少一种。
外围设备接口503可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器501和存储器502。在一些实施例中,处理器501、存储器502和外围设备接口503被集成在同一芯片或电路板上;在一些其他实施例中,处理器501、存储器502和外围设备接口503中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路504用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路504通过电磁信号与通信网络以及其他通信设备进行通信。射频电路504将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路504包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路504可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路504还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本发明对此不加以限定。
显示屏505用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏505是触摸显示屏时,显示屏505还具有采集在显示屏505的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器501进行处理。此时,显示屏505还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏505可以为一个,设置终端500的前面板;在另一些实施例中,显示屏505可以为至少两个,分别设置在终端500的不同表面或呈折叠设计;在再一些实施例中,显示屏505可以是柔性显示屏,设置在终端500的弯曲表面上或折叠面上。甚至,显示屏505还可以设置成非矩形的不规则图形,也即异形屏。显示屏505可以采用LCD(LiquidCrystal Display,液晶显示屏)、OLED(Organic Light-Emitting Diode,有机发光二极管)等材质制备。
摄像头组件506用于采集图像或视频。可选地,摄像头组件506包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件506还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路507可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器501进行处理,或者输入至射频电路504以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端500的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器501或射频电路504的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路507还可以包括耳机插孔。
定位组件508用于定位终端500的当前地理位置,以实现导航或LBS(LocationBased Service,基于位置的服务)。定位组件508可以是基于美国的GPS(GlobalPositioning System,全球定位系统)、中国的北斗系统、俄罗斯的格雷纳斯系统或欧盟的伽利略系统的定位组件。
电源509用于为终端500中的各个组件进行供电。电源509可以是交流电、直流电、一次性电池或可充电电池。当电源509包括可充电电池时,该可充电电池可以支持有线充电或无线充电。该可充电电池还可以用于支持快充技术。
在一些实施例中,终端500还包括有一个或多个传感器510。该一个或多个传感器510包括但不限于:加速度传感器511、陀螺仪传感器512、压力传感器513、指纹传感器514、光学传感器515以及接近传感器516。
加速度传感器511可以检测以终端500建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器511可以用于检测重力加速度在三个坐标轴上的分量。处理器501可以根据加速度传感器511采集的重力加速度信号,控制显示屏505以横向视图或纵向视图进行用户界面的显示。加速度传感器511还可以用于游戏或者用户的运动数据的采集。
陀螺仪传感器512可以检测终端500的机体方向及转动角度,陀螺仪传感器512可以与加速度传感器511协同采集用户对终端500的3D动作。处理器501根据陀螺仪传感器512采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
压力传感器513可以设置在终端500的侧边框和/或显示屏505的下层。当压力传感器513设置在终端500的侧边框时,可以检测用户对终端500的握持信号,由处理器501根据压力传感器513采集的握持信号进行左右手识别或快捷操作。当压力传感器513设置在显示屏505的下层时,由处理器501根据用户对显示屏505的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
指纹传感器514用于采集用户的指纹,由处理器501根据指纹传感器514采集到的指纹识别用户的身份,或者,由指纹传感器514根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器501授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器514可以被设置终端500的正面、背面或侧面。当终端500上设置有物理按键或厂商Logo时,指纹传感器514可以与物理按键或厂商Logo集成在一起。
光学传感器515用于采集环境光强度。在一个实施例中,处理器501可以根据光学传感器515采集的环境光强度,控制显示屏505的显示亮度。具体地,当环境光强度较高时,调高显示屏505的显示亮度;当环境光强度较低时,调低显示屏505的显示亮度。在另一个实施例中,处理器501还可以根据光学传感器515采集的环境光强度,动态调整摄像头组件506的拍摄参数。
接近传感器516,也称距离传感器,通常设置在终端500的前面板。接近传感器516用于采集用户与终端500的正面之间的距离。在一个实施例中,当接近传感器516检测到用户与终端500的正面之间的距离逐渐变小时,由处理器501控制显示屏505从亮屏状态切换为息屏状态;当接近传感器516检测到用户与终端500的正面之间的距离逐渐变大时,由处理器501控制显示屏505从息屏状态切换为亮屏状态。
本领域技术人员可以理解,图5中示出的结构并不构成对终端500的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
图6是本发明实施例提供的一种服务器的结构示意图,该服务器600可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processingunits,CPU)601和一个或一个以上的存储器602,其中,该存储器602中存储有至少一条指令,该至少一条指令由该处理器601加载并执行以实现上述各个方法实施例提供的方法。当然,该服务器还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该服务器还可以包括其他用于实现设备功能的部件,在此不做赘述。
在示例性实施例中,还提供了一种计算机可读存储介质,例如包括指令的存储器,上述指令可由处理器执行以完成上述实施例中的模拟按键检测方法。例如,该计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,上述程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
上述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (11)

1.一种模拟按键检测方法,其特征在于,所述方法包括:
获取目标应用程序的根窗口句柄;
当接收到所述目标应用程序的键鼠消息时,获取当前拥有焦点控件的窗口的句柄;
当所述目标应用程序的根窗口句柄和所述当前拥有焦点控件的窗口的句柄不一致时,向服务器发送模拟按键检测信息,所述模拟按键检测信息携带所述目标应用程序的用户信息。
2.根据权利要求1所述的方法,其特征在于,所述获取目标应用程序的根窗口句柄包括:
通过辅助线程遍历桌面的所有窗口,所述辅助线程用于处理所述目标应用程序的任务;
基于所述桌面的所有窗口,根据所述目标应用程序的标识,获取所述目标应用程序的根窗口句柄。
3.根据权利要求1所述的方法,其特征在于,所述获取目标应用程序的根窗口句柄之后,所述方法还包括:
获取所述目标应用程序的窗口过程函数;
子类化所述目标应用程序的窗口过程函数,设置代理窗口过程函数,所述代理窗口过程函数用于替代所述目标应用程序的窗口过程函数,接管向所述目标应用程序发送的所有消息;
基于所述代理窗口过程函数接收所述键鼠消息。
4.根据权利要求3所述的方法,其特征在于,所述获取所述目标应用程序的窗口过程函数包括:
基于所述目标应用程序的根窗口句柄,获得所述目标应用程序的窗口过程函数地址;
根据所述目标应用程序的窗口过程函数地址,获得所述目标应用程序的窗口过程函数。
5.根据权利要求3所述的方法,其特征在于,所述基于所述代理窗口过程函数接收所述键鼠消息包括:
当通过所述代理窗口过程函数接收到任一消息时,过滤掉所述键鼠消息以外的消息。
6.根据权利要求1所述的方法,其特征在于,所述获取当前拥有焦点控件的窗口的句柄之前,所述方法还包括:
创建数组列表,所述数组列表用于保存组合数组项,所述组合数组项由虚拟键值和当前时间点组成,所述虚拟键值用于表示键鼠消息;
设置第一挂钩函数,所述第一挂钩函数用于挂钩所有的消息发送函数;
设置第二挂钩函数,所述第二挂钩函数用于挂钩所有的消息接收函数;
基于所述第一挂钩函数所获取到的第一虚拟键值更新所述数组列表,所述第一虚拟键值用于表示所述消息发送函数所定义的键鼠消息;
当检测到所述第二挂钩函数所获取的第二虚拟键值在更新后的所述数组列表中不存在时,执行所述获取当前拥有焦点控件的窗口的句柄的步骤。
7.根据权利要求6所述的方法,其特征在于,所述基于所述第一挂钩函数所获取到的第一虚拟键值更新所述数组列表包括:
获取所述第一虚拟键值;
获取当前时间点;
基于所述第一虚拟键值和所述当前时间点,获取第一组合数组项;
基于所述第一组合数组项,更新所述数组列表。
8.一种模拟按键检测装置,其特征在于,所述装置包括:
获取模块,用于获取目标应用程序的根窗口句柄;
所述获取模块还用于当接收到所述目标应用程序的键鼠消息时,获取当前拥有焦点控件的窗口的句柄;
发送模块,用于当所述目标应用程序的根窗口句柄和所述当前拥有焦点控件的窗口的句柄不一致时,向服务器发送模拟按键检测信息,所述模拟按键检测信息携带所述目标应用程序的用户信息。
9.根据权利要求8所述的装置,其特征在于,所述获取模块用于:
通过辅助线程遍历桌面的所有窗口,所述辅助线程用于处理所述目标应用程序的任务;
基于所述桌面的所有窗口,根据所述目标应用程序的标识,获取所述目标应用程序的根窗口句柄。
10.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如权利要求1至权利要求7任一项所述的模拟按键检测方法所执行的操作。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现如权利要求1至权利要求7任一项所述的模拟按键检测方法所执行的操作。
CN201810798848.1A 2018-07-19 2018-07-19 模拟按键检测方法、装置、计算机设备及存储介质 Active CN109078331B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810798848.1A CN109078331B (zh) 2018-07-19 2018-07-19 模拟按键检测方法、装置、计算机设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810798848.1A CN109078331B (zh) 2018-07-19 2018-07-19 模拟按键检测方法、装置、计算机设备及存储介质

Publications (2)

Publication Number Publication Date
CN109078331A CN109078331A (zh) 2018-12-25
CN109078331B true CN109078331B (zh) 2021-09-21

Family

ID=64838168

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810798848.1A Active CN109078331B (zh) 2018-07-19 2018-07-19 模拟按键检测方法、装置、计算机设备及存储介质

Country Status (1)

Country Link
CN (1) CN109078331B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110096324B (zh) * 2019-04-22 2022-11-25 四川易简天下科技股份有限公司 一种基于windows系统的自动过滤自身窗口的高效抓屏方法

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014061422A (ja) * 2013-11-13 2014-04-10 Copcom Co Ltd ゲームプログラム、及びゲームシステム
CN104252592A (zh) * 2013-06-27 2014-12-31 贝壳网际(北京)安全技术有限公司 外挂应用程序的识别方法及装置
CN105207842A (zh) * 2015-08-26 2015-12-30 福建天晴数码有限公司 Android外挂特征检测的方法及系统
CN105435451A (zh) * 2015-12-22 2016-03-30 网易(杭州)网络有限公司 游戏作弊的识别及处理方法、装置、系统及服务器
CN105550594A (zh) * 2015-12-17 2016-05-04 西安电子科技大学 安卓应用文件的安全性检测方法
CN106127051A (zh) * 2016-06-29 2016-11-16 北京金山安全软件有限公司 一种防止鼠标被恶意捕获的方法、装置及电子设备
US9675874B1 (en) * 2013-07-18 2017-06-13 nWay, Inc. Multi-player gaming system
CN107797841A (zh) * 2017-11-21 2018-03-13 广东欧珀移动通信有限公司 窗口控制方法、装置、终端设备及存储介质
CN108187346A (zh) * 2018-01-30 2018-06-22 努比亚技术有限公司 一种防止应用外挂的方法、终端及存储介质
CN108199827A (zh) * 2018-01-09 2018-06-22 武汉斗鱼网络科技有限公司 客户端代码完整性校验方法、存储介质、电子设备及系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9839838B1 (en) * 2013-05-14 2017-12-12 Take-Two Interactive Software, Inc. System and method for online community management

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104252592A (zh) * 2013-06-27 2014-12-31 贝壳网际(北京)安全技术有限公司 外挂应用程序的识别方法及装置
US9675874B1 (en) * 2013-07-18 2017-06-13 nWay, Inc. Multi-player gaming system
JP2014061422A (ja) * 2013-11-13 2014-04-10 Copcom Co Ltd ゲームプログラム、及びゲームシステム
CN105207842A (zh) * 2015-08-26 2015-12-30 福建天晴数码有限公司 Android外挂特征检测的方法及系统
CN105550594A (zh) * 2015-12-17 2016-05-04 西安电子科技大学 安卓应用文件的安全性检测方法
CN105435451A (zh) * 2015-12-22 2016-03-30 网易(杭州)网络有限公司 游戏作弊的识别及处理方法、装置、系统及服务器
CN106127051A (zh) * 2016-06-29 2016-11-16 北京金山安全软件有限公司 一种防止鼠标被恶意捕获的方法、装置及电子设备
CN107797841A (zh) * 2017-11-21 2018-03-13 广东欧珀移动通信有限公司 窗口控制方法、装置、终端设备及存储介质
CN108199827A (zh) * 2018-01-09 2018-06-22 武汉斗鱼网络科技有限公司 客户端代码完整性校验方法、存储介质、电子设备及系统
CN108187346A (zh) * 2018-01-30 2018-06-22 努比亚技术有限公司 一种防止应用外挂的方法、终端及存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
一般游戏的反外挂保护方案;zzz822163;《https://blog.csdn.net/zzz822163/article/details/4213722》;20090525;全文 *
游戏检测外挂的几种方法;b2b0080;《https://www.docin.com/p-1583210829.html》;20160518;全文 *

Also Published As

Publication number Publication date
CN109078331A (zh) 2018-12-25

Similar Documents

Publication Publication Date Title
CN110636477B (zh) 设备连接方法、装置、终端及存储介质
CN110841285B (zh) 界面元素的显示方法、装置、计算机设备及存储介质
CN110308956B (zh) 一种应用界面显示方法、装置及移动终端
CN109815150B (zh) 应用测试方法、装置、电子设备及存储介质
CN110278464B (zh) 显示榜单的方法和装置
CN109522863B (zh) 耳部关键点检测方法、装置及存储介质
CN110769313B (zh) 视频处理方法及装置、存储介质
CN110784370B (zh) 设备测试的方法、装置、电子设备及介质
CN111897465B (zh) 弹窗显示方法、装置、设备及存储介质
CN110852850A (zh) 共享物品推荐方法、装置、计算机设备及存储介质
CN110290191B (zh) 资源转移结果处理方法、装置、服务器、终端及存储介质
CN109783176B (zh) 切换页面的方法和装置
CN109189290B (zh) 点击区域识别方法、装置和计算机可读存储介质
CN109107163B (zh) 模拟按键检测方法、装置、计算机设备及存储介质
CN111064657B (zh) 关注账户分组的方法、装置、系统
CN111061369B (zh) 交互方法、装置、设备及存储介质
CN112118482A (zh) 音频文件的播放方法、装置、终端及存储介质
CN112118353A (zh) 信息显示方法、装置、终端及计算机可读存储介质
CN112023403A (zh) 基于图文信息的对战过程展示方法及装置
CN111881423A (zh) 限制功能使用授权方法、装置、系统
CN110152309B (zh) 语音通信方法、装置、电子设备及存储介质
CN109078331B (zh) 模拟按键检测方法、装置、计算机设备及存储介质
CN110992954A (zh) 语音识别的方法、装置、设备及存储介质
CN108228052B (zh) 触发界面组件运行的方法、装置、存储介质及终端
CN112015612B (zh) 一种获取卡顿信息的方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant