CN108959918A - 一种输入法文件的保护方法、装置和电子设备 - Google Patents

一种输入法文件的保护方法、装置和电子设备 Download PDF

Info

Publication number
CN108959918A
CN108959918A CN201710354117.3A CN201710354117A CN108959918A CN 108959918 A CN108959918 A CN 108959918A CN 201710354117 A CN201710354117 A CN 201710354117A CN 108959918 A CN108959918 A CN 108959918A
Authority
CN
China
Prior art keywords
program
file
hook
input method
preset interface
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.)
Granted
Application number
CN201710354117.3A
Other languages
English (en)
Other versions
CN108959918B (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.)
Beijing Sogou Technology Development Co Ltd
Original Assignee
Beijing Sogou Technology Development 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 Beijing Sogou Technology Development Co Ltd filed Critical Beijing Sogou Technology Development Co Ltd
Priority to CN201710354117.3A priority Critical patent/CN108959918B/zh
Publication of CN108959918A publication Critical patent/CN108959918A/zh
Application granted granted Critical
Publication of CN108959918B publication Critical patent/CN108959918B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明实施例提供了一种输入法文件的保护方法、装置和电子设备,其中,所述方法包括:在至少一个目标程序中加载钩子程序,并采用所述钩子程序对预设接口进行监听;当监听到通过所述预设接口调用文件后,拦截对应的调用信息并检测;当依据所述调用信息确定非法调用所述预设接口后,忽略所述调用信息;从而过滤了对预设接口的非法调用,保护了输入法文件的安全,以及保证了输入法的正常使用。

Description

一种输入法文件的保护方法、装置和电子设备
技术领域
本发明涉及数据处理技术领域,特别是涉及一种输入文件的保护方法、装置和电子设备。
背景技术
用户在使用手机、计算机等各种终端时,经常要使用输入法进行文字输入。输入法在进行文字转换等使用过程中,通常需要用到一些词库文件,如:用户词库、系统词库、细胞词库等。这些词库文件能够便捷的辅助用户进行输入,并提高输入效率。
但是,目前输入法在使用过程中,其词库文件会被使用输入法的程序、杀毒软件、加密软件等非法修改,导致输入法无法正常使用。虽然输入法可以重新下载词库文件来进行输入,但是这样往往会丢失用户的输入法使用数据和配置等数据,仍然会影响输入法的正常使用,降低用户的输入效率。
发明内容
本发明实施例提供一种输入法文件的保护方法,以保证输入法的正常使用。
相应的,本发明实施例还提供了一种输入法的保护装置和一种电子设备,用以保证上述方法的实现及应用。
为了解决上述问题,本发明实施例公开了一种输入法文件的保护方法,包括:在至少一个目标程序中加载钩子程序,并采用所述钩子程序对预设接口进行监听;当监听到通过所述预设接口调用文件后,拦截对应的调用信息并检测;当依据所述调用信息确定非法调用所述预设接口后,忽略所述调用信息。
可选地,所述在至少一个目标程序中加载钩子程序,包括:当所述目标程序加载输入法程序后,依据所述输入法程序的通知消息加载钩子程序。
可选地,所述依据输入法程序的通知消息加载钩子程序,包括:接收输入法程序的通知消息,从所述通知消息中获取参数信息;依据所述参数信息加载所述钩子程序。
可选地,所述在至少一个目标程序中加载钩子程序,包括:在至少一个目标程序启动时,所述目标程序依据注册表信息加载所述钩子程序。
可选地,所述采用钩子程序对预设接口进行监听,包括:将接口函数注册到系统中,并依据所述接口函数对对应的预设接口进行监听。
可选地,所述非法调用为非设定程序对输入法文件的调用;所述目标程序和钩子程序属于一个进程,共享内存资源。
可选地,所述的方法还包括:在目标程序退出系统时,所述目标程序中加载的钩子程序执行相应的退出操作。
可选地,所述的方法还包括:若输入法程序退出系统,所述目标程序中加载的钩子程序执行退出操作。
可选地,所述的方法还包括:如果在系统中运行多于一个加载钩子程序的目标程序,则当一个目标程序退出系统,且输入法程序在系统中运行后,其他目标程序中加载的钩子程序保持运行。
可选地,所述目标程序包括以下至少一种:办公程序、通讯程序、浏览程序、播放程序、安全程序。
可选地,所述预设接口包括以下至少一种:文件创建接口、文件读写接口、文件移动接口、文件复制接口;所述接口函数包括以下至少一种:文件创建接口函数、文件读写接口函数、文件移动接口函数、文件复制接口函数。
一种在其上记录有用于执行本发明实施例中一个或多个所述方法的程序的计算机可读介质。
本发明实施例还公开了一种输入法文件的保护装置,包括:监听模块,用于在至少一个目标程序中加载钩子程序,并采用所述钩子程序对预设接口进行监听;拦截模块,用于当监听到通过所述预设接口调用文件后,拦截对应的调用信息并检测;操作忽略模块,用于当依据所述调用信息确定非法调用所述预设接口后,忽略所述调用信息。
可选地,所述监听模块包括:通知加载子模块,用于在所述目标程序加载输入法程序后,依据所述输入法程序的通知消息加载钩子程序。
可选地,所述通知加载子模块,用于接收输入法程序的通知消息,从所述通知消息中获取参数信息;依据所述参数信息加载所述钩子程序。
可选地,所述监听模块包括:启动加载子模块,用于在目标程序启动时,所述目标程序依据注册表信息加载所述钩子程序。
可选地,所述监听模块包括:注册监听子模块,用于将接口函数注册到系统中,并依据所述接口函数对对应的预设接口进行监听。
可选地,所述非法调用为非设定程序对输入法文件的调用;所述目标程序和钩子程序属于一个进程,共享内存资源。
可选地,所述的装置还包括:退出模块,用于在目标程序退出系统时,所述目标程序中加载的钩子程序执行相应的退出操作。
可选地,所述的装置还包括:退出模块,用于若输入法程序退出系统,所述目标程序中加载的钩子程序执行退出操作。
可选地,所述退出模块,还用于如果在系统中运行多于一个加载钩子程序的目标程序,则一个目标程序退出系统,且输入法程序在系统中运行后,其他目标程序中加载的钩子程序保持运行。
可选地,所述目标程序包括以下至少一种:办公程序、通讯程序、浏览程序、播放程序、安全程序。
可选地,所述预设接口包括以下至少一种:文件创建接口、文件读写接口、文件移动接口、文件复制接口;所述接口函数包括以下至少一种:文件创建接口函数、文件读写接口函数、文件移动接口函数、文件复制接口函数。
本发明实施例还公开了一种电子设备,包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于进行以下操作的指令:在至少一个目标程序中加载钩子程序,并采用所述钩子程序对预设接口进行监听;当监听到通过所述预设接口调用文件后,拦截对应的调用信息并检测;当依据到所述调用信息确定非法调用所述预设接口后,忽略所述调用信息。
可选地,所述在至少一个目标程序中加载钩子程序,包括:当所述目标程序加载输入法程序后,依据所述输入法程序的通知消息加载钩子程序。
可选地,所述依据输入法程序的通知消息加载钩子程序,包括:接收输入法程序的通知消息,从所述通知消息中获取参数信息;依据所述参数信息加载所述钩子程序。
可选地,所述在至少一个目标程序中加载钩子程序,包括:在至少一个目标程序启动时,所述目标程序依据注册表信息加载所述钩子程序。
可选地,所述采用钩子程序对预设接口进行监听,包括:将接口函数注册到系统中,并依据所述接口函数对对应的预设接口进行监听。
可选地,所述非法调用为非设定程序对输入法文件的调用;所述目标程序和钩子程序属于一个进程,共享内存资源。
可选地,还包含用于进行以下操作的指令:在目标程序退出系统时,所述目标程序中加载的钩子程序执行相应的退出操作。
可选地,还包含用于进行以下操作的指令:若输入法程序退出系统,所述目标程序中加载的钩子程序执行退出操作。
可选地,还包含用于进行以下操作的指令:如果在系统中运行多于一个加载钩子程序的目标程序,则当一个目标程序退出系统,且输入法程序在系统中运行后,其他目标程序中加载的钩子程序保持运行。
可选地,所述目标程序包括以下至少一种:办公程序、通讯程序、浏览程序、播放程序、安全程序。
可选地,所述预设接口包括以下至少一种:文件创建接口、文件读写接口、文件移动接口、文件复制接口;所述接口函数包括以下至少一种:文件创建接口函数、文件读写接口函数、文件移动接口函数、文件复制接口函数。
本发明实施例包括以下优点:
本发明实施例可以在目标程序中加载钩子程序,从而采用钩子程序对预设接口进行监听,能够在监听到某一程序通过预设接口调用文件后,拦截对应的调用信息并进行检测;当依据所述调用信息确定非法调用所述预设接口后,忽略该程序的调用信息。从而过滤了对预设接口的非法调用,保护了输入法文件的安全,以及保证了输入法的正常使用。
附图说明
图1是本发明的一种输入法文件的保护方法实施例的步骤流程图;
图2是本发明的一种输入法文件的保护方法可选实施例的步骤流程图;
图3是本发明的一种输入法文件的保护装置实施例的结构框图;
图4是本发明的一种输入法文件的保护装置可选实施例的结构框图;
图5根据一示例性实施例示出的一种用于保护输入法文件的电子设备的结构框图;
图6是本发明根据另一示例性实施例示出的一种用于保护输入法文件的电子设备的结构示意图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
参照图1,示出了本发明的一种输入法文件的保护方法实施例的步骤流程图,具体可以包括如下步骤:
步骤102、在至少一个目标程序中加载钩子程序,并采用所述钩子程序对预设接口进行监听。
本发明实施例可采用钩子程序对预设接口进行监控,所述钩子程序是操作系统中消息处理机制的一个平台,应用程序可以设置钩子程序以监视指定窗口的某种消息,当消息到达后,在目标窗口处理函数之前处理该消息。所述钩子程序被应用程序加载后,可对预设接口被调用的情况进行监听。本发明实施例可预设确定需要钩子程序监控的预设接口,所述预设接口是系统中的部分或全部应用程序编程接口(Application ProgrammingInterface,API),可依据需求设置预设接口,例如,可将与文件相关的接口作为预设接口,如文件创建接口、写文件接口等等。可在至少一个目标程序中加载所述钩子程序,即当系统中运行一个或多个目标程序时,在每个目标程序中均加载钩子程序,各目标程序和对应加载的钩子程序属于同一个进程,即目标程序的进程,共享相关的内存资源。其中,所述目标程序是与输入法文件相关的各种应用程序,如可调用输入法的程序,又如可处理输入法文件(如词库文件等)的应用程序,例如WORD等办公软件、杀毒软件等。钩子程序可对预设接口进行监听。
步骤104、当监听到通过所述预设接口调用文件后,拦截对应的调用信息并检测。
在对所述预设接口调用的过程中,当某一应用程序采用调用信息通过所述预设接口调用文件时,所述钩子程序可拦截该调用信息,即在调用信息达到预设接口前进行拦截,进而根据调用信息判断对于预设接口的调用是否为合法调用。其中,合法调用依据文件确定,任意程序对于非指定文件的调用均可为合法调用,设定程序对指定文件的调用也为合法调用;而非设定程序对于指定文件的调用则为非法调用,例如输入法程序对输入法文件的调用为合法调用,而杀毒软件对输入法文件的调用为非法调用。本发明实施例中指定文件可为输入法文件如词库等。
本发明实施例中,指定文件可为输入法文件,所述输入法文件是用于存储该输入法相关数据的文件,包括输入法的各种类型的词库文件如用户词库文件、系统词库文件等,还可包括输入法的用户文件等。所述设定程序可预先根据需求设置,例如,为了保证输入法对应文件的安全,可将输入法程序确定为设定程序,而其他的程序则为非设定程序。
步骤106、当依据所述调用信息确定非法调用所述预设接口后,忽略所述调用信息。
本发明实施例中所述钩子程序可对该调用信息进行分析,确定对于预设接口调用的合法性。其中,设定程序对于指定文件的调用为合法调用,任意程序对于非指定文件的调用均为合法调用,对于合法调用可将调用信息返回给预设接口,保证合法调用的执行;非设定程序对于指定文件的调用,如非设定程序对于输入法文件的调用为非法调用。对于非法调用所述预设接口,可不执行对指定文件即输入法文件的调用,因此可忽略目标程序对输入法文件的调用,使得该目标程序无法调用输入法文件,从而过滤非设定程序对输入法对应文件的调用,保证了输入法文件的安全。此外,在忽略所述调用信息后,还可以返回失败信息给目标程序,从而告知目标程序调用失败。
本发明的一个示例中,将系统杀毒软件确定为目标应用,将输入法程序确定为设定程序。在系统杀毒软件加载钩子程序后,所述钩子程序对文件删除接口进行监听;当钩子程序在该文件删除接口监听到接口的调用信息后,拦截该调用信息,若依据该调用信息判断为非法调用,如杀毒软件要删除输入法词库文件,则可忽略该调用信息以拒绝执行对该输入法文件的调用;反之,若依据调用信息判断为合法调用,如输入法文件对于旧词库文件的删除,又如对非输入法文件的删除等,则可将该调用信息返回给文件删除接口,正常执行文件删除操作。
其中,操作系统中可能运行对于一个目标程序,则每个目标程序在启动或调用输入法时均可加载钩子程序。例如在操作系统启动时安全软件自启动,则安全软件可依据注册表的信息加载一钩子程序。系统启动后,用户使用Microsoft Office Word处理文件,则在Microsoft Office Word启动并调用输入法程序时,可依据输入法程序的通知消息加载一钩子程序。即系统中运行的每个目标程序均可加载钩子程序,从而系统中运行多于一个加载有钩子程序的目标程序。则在预设接口被调用时,每个钩子程序可分别拦截该调用信息并检测。又如具有一定的监听顺序,从而基于顺序执行相应的操作,例如在第一个拦截的钩子程序判断为非法调用,可忽略该调用信息以拒绝执行对该输入法文件的调用,从而后续的钩子程序无需再检测该调用信息;而当前面的钩子程序判断为合法调用后,后续的钩子程序可继续检测,直到最后一个钩子程序检测完毕,从而能够减少误操作。
综上,可以在目标程序中加载钩子程序,从而采用钩子程序对预设接口进行监听,能够在监听到某一程序通过预设接口调用文件后,拦截对应的调用信息并进行检测,然后当依据所述调用信息确定非法调用所述预设接口后,忽略该程序的调用信息。从而过滤了对预设接口的非法调用,保护了输入法文件的安全,以及保证了输入法的正常使用。
本发明的另一个实施例中,所述目标程序可包括多种类型,其中,所述目标程序包括以下至少一种:办公程序、通讯程序、浏览程序、播放程序、安全程序。其中,办公程序指可以进行文字处理、表格制作、幻灯片制作、图形图像处理、简单数据库的处理等功能的软件,如Office系列、WPS系列等;通讯程序允许两人或多人使用网络实时的传递文字消息、文件、语音与视频交流,如聊天软件等;浏览程序指可以显示网页服务器或者文件系统的文件内容,如HTML(HyperText Markup Language,超文本标记语言)文件,并让用户与这些文件交互的一种软件程序,如浏览器;播放程序指具有播放音频、视频功能的软件,如音乐播放器、视频播放器等;安全程序是指具有保护系统安全功能的软件,如安全软件、杀毒软件等等。
相应的,目标程序中加载钩子程序的方式也可包括多种,例如在目标程序加载输入法程序时在其中加载钩子程序,又如在目标程序启动时加载钩子程序等,本发明实施例对此不作限制。
参照图2,示出了本发明的一种输入法文件的保护方法可选实施例的步骤流程图,具体可以包括如下步骤:
步骤202、在至少一个目标程序中加载钩子程序。
本发明实施例中,在操作系统中每启动一个目标程序,均加载一个钩子程序,因此,若操作系统中启动了多个目标程序,则加载的钩子程序也包括多个。本发明实施例中,所述目标程序包括多种类型的应用程序,如上述办公程序、通讯程序、浏览程序、播放程序、安全程序等,这些应用程序均可调用输入法文件。其中,部分或全部应用程序可在使用中调用输入法程序进行输入的,也有部分程序可能不调用输入法程序当仍然可操作输入法文件。相应的,在目标程序中加载钩子程序的方式也有多种,具体如下:
本发明一个可选实施例中,可在各目标程序加载输入法程序时分别加载钩子程序,即当所述目标程序加载输入法程序后,依据所述输入法程序的通知消息加载钩子程序。针对任一可调用输入法的程序的应用程序,可在需要时加载输入法程序,如启动时,又如需要在输入框中输入等情况下,在输入法程序加载成功后,所述输入法程序可发送通知消息给调用该目标程序,然后目标程序可依据输入法程序的通知消息加载钩子程序。即目标程序接收输入法程序的通知消息,从所述通知消息中获取参数信息,所述参数信息包括钩子程序的名称、钩子程序的存储地址、以及各种钩子程序的信息等,从而依据所述参数信息加载所述钩子程序。例如,当Microsoft Office Word启动后,输入法程序被启动,则所述Microsoft Office Word加载所述钩子程序。此后,在系统中启动Microsoft Office Excel并在其调用输入法程序时,为Excel加载钩子程序,浏览器程序启动后,通过搜索框调用输入法程序,则可依据通知消息在浏览器的主进程中分配资源,为浏览器加载钩子程序。
本发明另一个可选实施例中,可在目标程序启动时加载钩子程序,即在至少一个目标程序启动时,所述目标程序依据注册表信息加载所述钩子程序,其中,所述注册表是操作系统中的一个重要的数据库,用于存储系统和应用程序的设置信息。本发明实施例可预先依据钩子程序修改注册表,以使目标程序启动时能够加载该钩子程序。从而在目标程序在启动时,如目标程序在开机自启动时,可获取该注册表信息,然后依据注册表信息确定钩子程序的名称、地址等资源,在自身进程中配置钩子程序的资源,从而自动加载所述钩子程序。例如,杀毒软件、即时通讯程序均在开机时自启动,杀毒软件、即时通讯程序启动的过程中,可获取注册表信息确定钩子程序的资源,然后分别在自身进程中分配资源给钩子程序,从而在杀毒软件、即时通讯程序中分别加载钩子程序。
步骤204、将接口函数注册到系统中,并依据所述接口函数对对应的预设接口进行监听。
本发明实施例中可采用钩子程序对预设接口进行监听,即采用钩子程序对应的钩子函数对预设接口进行监听,所述钩子函数在其他与预设接口相关的函数被调用之前被调用,用于对消息、事件进行过滤。因此,可预先根据钩子程序需要监听的预设接口,确定对应的接口函数,从而在钩子程序被加载成功后,可将对应的接口函数注册到系统中,然后可依据接口函数对对应的预设接口进行监听。本发明实施例中,所述预设接口可为一个也可为多个,对应的,所述接口函数可为一个也可为多个,每个接口函数对应一个预设接口。所述预设接口可包括以下至少一种:文件创建接口CreateFile、文件读写接口WriteFile、文件移动接口MoveFile、文件复制接口CopyFile;对应的,所述接口函数可包括以下至少一种:文件创建接口函数CreateFile_hook、文件读写接口函数WriteFile_hook、文件移动接口函数MoveFile_hook、文件复制接口函数CopyFile_hook。其中,所述文件创建接口用于执行文件创建操作,所述文件创建接口函数用于对文件创建接口的操作进行监听;所述文件读写接口用于执行文件读写操作,所述文件读写接口函数用于对文件读写接口的操作进行监听;所述文件复制接口用于执行文件复制操作,所述文件复制接口函数用于对文件复制接口的操作进行监听;所述文件移动接口用于执行文件移动操作,所述文件移动接口函数用于对文件移动接口的操作进行监听。
步骤206、当监听到通过所述预设接口调用文件后,拦截对应的调用信息,并依据所述调用信息确定调用的文件。
当任一钩子程序监听到任一预设接口调用文件时,为了防止执行调用操作的程序对输入法文件的非法调用,导致所述输入法文件被破坏,在调用信息达到预设接口前,所述钩子程序可拦截对应的调用信息;并从所述调用信息中确定调用的文件,待对所述文件进行相应的处理后,确定是否允许预设接口调用所述文件。
步骤208、判断所述调用信息对应文件是否为输入法文件。
钩子程序依据调用信息确定需要调用的文件,即依据调用信息确定文件相关参数信息如存储位置、名称、类型等各种参数,依据该文件相关参数信息判断所述需要调用的文件是否是输入法文件。若是,即调用信息对应文件为输入法文件,则执行步骤210,若否,即调用信息对应文件不为输入法文件,则执行步骤214。
步骤210、判断调用所述输入法文件的应用程序是否是设定程序。
本发明实施例中,为了保证输入法文件的安全,防止其他应用程序对输入法文件的恶意破坏,如删除、移动、更改等,可预先设置能够调用输入法文件的程序即设定程序,除设定程序外的其他应用程序均无法对输入法文件进行调用。例如可以只允许输入法程序调用其对应的文件,即可将输入法程序确定为设定程序,当然也可设置其他的应用程序为设定程序。因此,在确定调用的文件是输入法文件时,可判断调用所述输入法文件的应用程序是否是设定程序;若是,则执行步骤214,若否,则执行步骤212。
步骤212、忽略所述调用信息。
本发明实施例中,非法调用可以指非设定程序对输入法文件的调用,因此当确定调用输入法文件的应用程序不是设定程序时,可确定该调用为非法调用,则忽略所述调信息,即所述钩子程序不将所述调用信息发送至所述预设接口,则所述预设接口无法执行对应的调用操作。可选的,所述钩子程序可将调用失败信息返回至该应用程序。例如,将输入法程序确定为设定程序,安全软件、办公程序等均可加载钩子程序,任一钩子程序拦截调用信息后,若检测调用输入法文件的程序为安全软件,安全软件不是设定程序,则可忽略该调用操作并返回失败信息如“调用失败”等。
步骤214、将所述调用信息发送给对应的预设接口。
当确定调用输入法文件的应用程序不是设定程序时,可将所述调用信息发送给对应的预设接口,预设接口可依据所述调用信息调用对应的文件,并将该文件发送给对应的应用程序,从而该应用程序可成功调用该文件。例如,Microsoft Office Word程序加载了输入法程序,用户在Microsoft Office Word的中输入字词是通过调用输入法程序完成的,用户采用输入法程序输入拼音“nihao”时,输入法程序需要调用输入法的词库文件以匹配该拼音对应的候选项,则输入法程序发送文件读请求至文件读写接口调用输入法的词库,钩子程序从文件读请求中获取调用信息,并依据调用信息确定通过预设接口调用的文件为输入法文件时,确定所述调用的应用程序输入法程序为设定程序,可将对应的调用信息发送给预设接口,预设接口根据接收到的调用信息,将调用信息对应的词库文件返回给输入法程序,从而在输入法的候选区域中显示相应的候选项如:你好、你号、拟好、泥嚎等。
另外,当钩子程序检测到所述调用信息对应文件不是输入法文件时,也将所述调用信息返回给预设接口,正常执行该文件的调用操作。
步骤216、依据需求执行钩子程序的退出操作。
本发明实施例中,钩子程序可在各种情况下执行退出操作,或者保持运行,具体依据需求设定。
在一个可选实施例中,在目标程序退出系统时,所述目标程序中加载的钩子程序执行相应的退出操作。即目标程序在退出时,加载在该目标程序中的钩子程序也会退出,但是,若在系统中运行多于一个加载钩子程序的目标程序,则系统中运行的加载在其他目标程序中的钩子程序不受影响,可继续运行。即一个目标程序退出系统,且输入法程序在系统中运行后,其他目标程序中加载的钩子程序保持运行。
本发明另一个可选实施例中,若目标程序中的钩子程序是在输入法程序启动时依据通知消息加载的,则输入法程序退出系统后,这类目标程序中加载的钩子程序也执行退出操作。即对于依据输入法程序的通知消息加载的钩子程序,其运行依赖于输入法程序的运行,即系统中运行着所述输入法程序时,则这类目标程序加载的钩子程序依然保持运行;而所述输入法程序退出系统时,这类目标程序加载的钩子程序也退出。而若钩子程序是目标程序启动时依据注册表信息加载的,则输入法程序的退出可不影响这类目标程序中钩子程序的运行,从而对于杀毒软件等开启自启动的目标程序,钩子程序可运行防止输入法文件被误操作,如在杀毒软件查杀时误删除等。
本申请实施例中,通过多种方式加载钩子程序,从而能够在各种目标程序中加载钩子程序,使得钩子程序能够监听预设接口,来保证输入法文件的安全。即当发现有程序要修改输入法的词库等相关文件时,钩子程序可过滤掉非法的文件修改操作,保护文件安全。而且能够使用户的输入法个人使用数据和配置得以保护,提升了输入法的用户体验。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
参照图3,示出了本发明的一种输入法文件的保护装置实施例的结构框图,具体可以包括如下模块:监听模块302、拦截模块304和操作忽略模块306,其中,
监听模块302,用于在至少一个目标程序中加载钩子程序,并采用所述钩子程序对预设接口进行监听;
拦截模块304,用于当监听到通过所述预设接口调用文件后,拦截对应的调用信息并检测;
操作忽略模块306,用于当依据所述调用信息确定非法调用所述预设接口后,忽略所述调用信息。
参照图4,示出了本发明的一种输入法文件的保护装置可选实施例的结构框图;本发明一个可选的实施例中,所述的装置还包括:退出模块308和保持模块310,其中,
退出模块308,用于在目标程序退出系统时,所述目标程序中加载的钩子程序执行相应的退出操作;以及用于若输入法程序退出系统,所述目标程序中加载的钩子程序执行退出操作。
其中,所述退出模块308,还用于如果在系统中运行多于一个加载钩子程序的目标程序,则一个目标程序退出系统,且输入法程序在系统中运行后,其他目标程序中加载的钩子程序保持运行。
本发明的一个可选的实施例中,所述监听模块302包括:通知加载子模块3022、启动加载子模块3024和注册监听子模块3026,其中,
通知加载子模块3022,用于在所述目标程序加载输入法程序后,依据所述输入法程序的通知消息加载钩子程序。
启动加载子模块3024,用于在目标程序启动时,所述目标程序依据注册表信息加载所述钩子程序。
注册监听子模块3026,用于将接口函数注册到系统中,并依据所述接口函数对对应的预设接口进行监听。
本发明的一个可选的实施例中,所述通知加载子模块3022,具体用于接收输入法程序的通知消息,从所述通知消息中获取参数信息;依据所述参数信息加载所述钩子程序。
本发明的一个可选的实施例中,所述目标程序包括以下至少一种:办公程序、通讯程序、浏览程序、播放程序、安全程序。
本发明的一个可选的实施例中,所述预设接口包括以下至少一种:文件创建接口、文件读写接口、文件移动接口、文件复制接口;所述接口函数包括以下至少一种:文件创建接口函数、文件读写接口函数、文件移动接口函数、文件复制接口函数。
本发明的一个可选的实施例中,所述非法调用为非设定程序对输入法文件的调用;所述目标程序和钩子程序属于一个进程,共享内存资源。
本发明实施例可以在目标程序中加载钩子程序,从而采用钩子程序对预设接口进行监听,能够在监听到某一程序通过预设接口调用文件后,拦截对应的调用信息并进行检测;当依据所述调用信息确定非法调用所述预设接口后,忽略该程序的调用信息。从而过滤了对预设接口的非法调用,保护了输入法文件的安全,以及保证了输入法的正常使用。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
图5是根据一示例性实施例示出的一种用于语料抽取的电子设备500的结构框图。例如,电子设备500可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
参照图5,电子设备500可以包括以下一个或多个组件:处理组件502,存储器504,电源组件506,多媒体组件508,音频组件510,输入/输出(I/O)的接口512,传感器组件514,以及通信组件516。
处理组件502通常控制电子设备500的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理元件502可以包括一个或多个处理器520来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件502可以包括一个或多个模块,便于处理组件502和其他组件之间的交互。例如,处理部件502可以包括多媒体模块,以方便多媒体组件508和处理组件502之间的交互。
存储器504被配置为存储各种类型的数据以支持在设备500的操作。这些数据的示例包括用于在电子设备500上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器504可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电力组件504为电子设备500的各种组件提供电力。电力组件504可以包括电源管理系统,一个或多个电源,及其他与为电子设备500生成、管理和分配电力相关联的组件。
多媒体组件508包括在所述电子设备500和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件508包括一个前置摄像头和/或后置摄像头。当电子设备500处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件510被配置为输出和/或输入音频信号。例如,音频组件510包括一个麦克风(MIC),当电子设备500处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器504或经由通信组件516发送。在一些实施例中,音频组件510还包括一个扬声器,用于输出音频信号。
I/O接口512为处理组件502和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件514包括一个或多个传感器,用于为电子设备500提供各个方面的状态评估。例如,传感器组件514可以检测到设备500的打开/关闭状态,组件的相对定位,例如所述组件为电子设备500的显示器和小键盘,传感器组件514还可以检测电子设备500或电子设备500一个组件的位置改变,用户与电子设备500接触的存在或不存在,电子设备500方位或加速/减速和电子设备500的温度变化。传感器组件514可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件514还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件514还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件516被配置为便于电子设备500和其他设备之间有线或无线方式的通信。电子设备500可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信部件514经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信部件514还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,电子设备500可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器504,上述指令可由电子设备500的处理器520执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
一种非临时性计算机可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行一种输入法文件的保护方法,所述方法包括:在至少一个目标程序中加载钩子程序,并采用所述钩子程序对预设接口进行监听;当监听到通过所述预设接口调用文件后,拦截对应的调用信息并检测;当依据所述调用信息确定非法调用所述预设接口后,忽略所述调用信息。
可选地,所述在至少一个目标程序中加载钩子程序,包括:当所述目标程序加载输入法程序后,依据所述输入法程序的通知消息加载钩子程序。
可选地,所述依据输入法程序的通知消息加载钩子程序,包括:接收输入法程序的通知消息,从所述通知消息中获取参数信息;依据所述参数信息加载所述钩子程序。
可选地,所述在至少一个目标程序中加载钩子程序,包括:在至少一个目标程序启动时,所述目标程序依据注册表信息加载所述钩子程序。
可选地,所述采用钩子程序对预设接口进行监听,包括:将接口函数注册到系统中,并依据所述接口函数对对应的预设接口进行监听。
可选地,所述非法调用为非设定程序对输入法文件的调用;所述目标程序和钩子程序属于一个进程,共享内存资源。
可选地,所述的方法还包括:在目标程序退出系统时,所述目标程序中加载的钩子程序执行相应的退出操作。
可选地,所述的方法还包括:若输入法程序退出系统,所述目标程序中加载的钩子程序执行退出操作。
可选地,所述的方法还包括:如果在系统中运行多于一个加载钩子程序的目标程序,则当一个目标程序退出系统,且输入法程序在系统中运行后,其他目标程序中加载的钩子程序保持运行。
可选地,所述目标程序包括以下至少一种:办公程序、通讯程序、浏览程序、播放程序、安全程序。
可选地,所述预设接口包括以下至少一种:文件创建接口、文件读写接口、文件移动接口、文件复制接口;所述接口函数包括以下至少一种:文件创建接口函数、文件读写接口函数、文件移动接口函数、文件复制接口函数。
图6是本发明根据另一示例性实施例示出的一种用于保护输入法文件的电子设备600的结构示意图。该电子设备600可以是服务器,该服务器可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(central processing units,CPU)622(例如,一个或一个以上处理器)和存储器632,一个或一个以上存储应用程序642或数据644的存储介质630(例如一个或一个以上海量存储设备)。其中,存储器632和存储介质630可以是短暂存储或持久存储。存储在存储介质630的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器622可以设置为与存储介质630通信,在服务器上执行存储介质630中的一系列指令操作。
服务器还可以包括一个或一个以上电源626,一个或一个以上有线或无线网络接口650,一个或一个以上输入输出接口658,一个或一个以上键盘656,和/或,一个或一个以上操作系统641,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种输入法文件的保护方法、一种输入法文件的保护装置和一种电子设备,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (10)

1.一种输入法文件的保护方法,其特征在于,包括:
在至少一个目标程序中加载钩子程序,并采用所述钩子程序对预设接口进行监听;
当监听到通过所述预设接口调用文件后,拦截对应的调用信息并检测;
当依据所述调用信息确定非法调用所述预设接口后,忽略所述调用信息。
2.根据权利要求1所述的方法,其特征在于,所述在至少一个目标程序中加载钩子程序,包括:
当所述目标程序加载输入法程序后,依据所述输入法程序的通知消息加载钩子程序。
3.根据权利要求2所述的方法,其特征在于,所述依据输入法程序的通知消息加载钩子程序,包括:
接收输入法程序的通知消息,从所述通知消息中获取参数信息;
依据所述参数信息加载所述钩子程序。
4.根据权利要求1所述的方法,其特征在于,所述在至少一个目标程序中加载钩子程序,包括:
在至少一个目标程序启动时,所述目标程序依据注册表信息加载所述钩子程序。
5.根据权利要求1-4任一所述的方法,其特征在于,所述采用钩子程序对预设接口进行监听,包括:
将接口函数注册到系统中,并依据所述接口函数对对应的预设接口进行监听。
6.根据权利要求1-4任一所述的方法,其特征在于,所述非法调用为非设定程序对输入法文件的调用;所述目标程序和钩子程序属于一个进程,共享内存资源。
7.根据权利要求1所述的方法,其特征在于,还包括:
在目标程序退出系统时,所述目标程序中加载的钩子程序执行相应的退出操作。
8.一种输入法文件的保护装置,其特征在于,包括:
监听模块,用于在至少一个目标程序中加载钩子程序,并采用所述钩子程序对预设接口进行监听;
拦截模块,用于当监听到通过所述预设接口调用文件后,拦截对应的调用信息并检测;
操作忽略模块,用于当依据所述调用信息确定非法调用所述预设接口后,忽略所述调用信息。
9.一种在其上记录有用于执行权利要求1-7中一个或多个所述方法的程序的计算机可读介质。
10.一种电子设备,其特征在于,包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于进行以下操作的指令:
在至少一个目标程序中加载钩子程序,并采用所述钩子程序对预设接口进行监听;
当监听到通过所述预设接口调用文件后,拦截对应的调用信息并检测;
当依据到所述调用信息确定非法调用所述预设接口后,忽略所述调用信息。
CN201710354117.3A 2017-05-18 2017-05-18 一种输入法文件的保护方法、装置和电子设备 Active CN108959918B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710354117.3A CN108959918B (zh) 2017-05-18 2017-05-18 一种输入法文件的保护方法、装置和电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710354117.3A CN108959918B (zh) 2017-05-18 2017-05-18 一种输入法文件的保护方法、装置和电子设备

Publications (2)

Publication Number Publication Date
CN108959918A true CN108959918A (zh) 2018-12-07
CN108959918B CN108959918B (zh) 2021-09-03

Family

ID=64461956

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710354117.3A Active CN108959918B (zh) 2017-05-18 2017-05-18 一种输入法文件的保护方法、装置和电子设备

Country Status (1)

Country Link
CN (1) CN108959918B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101493873A (zh) * 2009-03-04 2009-07-29 浪潮电子信息产业股份有限公司 基于内核层技术实现对win平台文件读写操作访问控制方法
CN102902909A (zh) * 2012-10-10 2013-01-30 北京奇虎科技有限公司 一种防止文件被篡改的系统和方法
US8561176B1 (en) * 2007-01-24 2013-10-15 Mcafee, Inc. System, method and computer program product for monitoring and/or analyzing at least one aspect of an invocation of an interface
CN104156661A (zh) * 2014-07-26 2014-11-19 珠海市君天电子科技有限公司 一种防止账户密码被篡改的方法及装置
CN104268471A (zh) * 2014-09-10 2015-01-07 珠海市君天电子科技有限公司 一种检测面向返程的编程攻击的方法及装置
CN104462961A (zh) * 2014-12-24 2015-03-25 北京奇虎科技有限公司 移动终端及其隐私权限优化方法
CN105956475A (zh) * 2016-05-17 2016-09-21 北京金山安全软件有限公司 Dll文件的拦截处理方法、装置及电子设备

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8561176B1 (en) * 2007-01-24 2013-10-15 Mcafee, Inc. System, method and computer program product for monitoring and/or analyzing at least one aspect of an invocation of an interface
CN101493873A (zh) * 2009-03-04 2009-07-29 浪潮电子信息产业股份有限公司 基于内核层技术实现对win平台文件读写操作访问控制方法
CN102902909A (zh) * 2012-10-10 2013-01-30 北京奇虎科技有限公司 一种防止文件被篡改的系统和方法
CN104156661A (zh) * 2014-07-26 2014-11-19 珠海市君天电子科技有限公司 一种防止账户密码被篡改的方法及装置
CN104268471A (zh) * 2014-09-10 2015-01-07 珠海市君天电子科技有限公司 一种检测面向返程的编程攻击的方法及装置
CN104462961A (zh) * 2014-12-24 2015-03-25 北京奇虎科技有限公司 移动终端及其隐私权限优化方法
CN105956475A (zh) * 2016-05-17 2016-09-21 北京金山安全软件有限公司 Dll文件的拦截处理方法、装置及电子设备

Also Published As

Publication number Publication date
CN108959918B (zh) 2021-09-03

Similar Documents

Publication Publication Date Title
CN102739868B (zh) 移动终端的丢失处理方法及系统
CN104765552B (zh) 权限管理方法和装置
US10885218B2 (en) Privacy protection method and terminal device
CN106778175B (zh) 一种界面锁定方法、装置和终端设备
CN106095220B (zh) 通知消息提示方法及装置
KR20140027578A (ko) 잠금 기능을 제어하기 위한 방법 및 그 전자 장치
CN104376273A (zh) 一种数据访问控制方法和装置
CN104965732B (zh) 桌面启动方法及装置
CN109214187B (zh) 一种控制计算机启动的方法、装置和电子设备
CN103391354A (zh) 信息保密系统及信息保密方法
CN104253899A (zh) 通讯终端的控制方法和装置
US20190340343A1 (en) Application interface display method, apparatus, and terminal, and storage medium
CN107729764A (zh) 敏感信息的保护方法、装置、存储介质及电子设备
CN112784262A (zh) 数据访问方法、装置、终端及存储介质
CN108804915A (zh) 病毒程序清理方法、存储设备及电子终端
CN105868625B (zh) 一种拦截文件被重启删除的方法及装置
CN106528385A (zh) 系统流畅性的监测方法、装置及终端
CN107276795A (zh) 基于容器的信息处理方法和装置、以及服务器和终端
WO2013189273A1 (zh) 监控移动终端中预设操作的方法和装置
US8793703B2 (en) Mobile terminal, method and program for providing a virtual setup screen
CN105824513A (zh) 消息处理方法及装置
CN108959918A (zh) 一种输入法文件的保护方法、装置和电子设备
CN107911527A (zh) 一种信息保护方法、终端设备及计算机可读存储介质
CN107480076A (zh) 系统分区的保护处理方法、装置及终端
CN109104759B (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