防注入的方法和装置制造方法及图纸

技术编号:14418818 阅读:63 留言:0更新日期:2017-01-12 18:14
本发明专利技术涉及一种防注入的方法和装置。所述方法包括以下步骤:获取应用程序编程接口的调用指令;根据所述调用指令在应用程序编程接口内部读取注册表信息时,进入Hook函数;通过所述Hook函数读取注册表信息,并根据预设策略获取动态链接库信息;加载获取的动态链接库信息到当前进程。上述防注入的方法和装置,调用应用程序编程接口时,通过Hook函数读取注册表信息,并按照预设策略获取动态链接库信息,加载动态链接库信息到当前进程中,通过预设策略筛选了动态链接库,而不是直接由应用程序编程接口读取注册表信息获取动态链接库进行加载,不需人工识别,能防止出错,且能加载应用程序编程接口,因筛选过动态链接库,调用应用程序编程接口安全性高。

【技术实现步骤摘要】

本专利技术涉及信息安全领域,特别是涉及一种防注入的方法和装置
技术介绍
注入是指以某种方式或通过系统机制把可执行模块强行加载到进程中。常见的注入发生在API(ApplicantProgrammingInterface,应用程序编程接口)的内部,当代码中调用某个系统API时(如SHELL32.dll的特定API),API内部会主动读取注册表特定的位置,检查是否有第三方的DLL(DynamicLinkLibrary,动态链接库)注册信息,如果存在第三方的DLL信息,API会把这些第三方DLL加载到当前进程中,这个就是一次注入过程。为了防止注入,传统的方式是避免调用有注入行为的API。然而,采用避免调用的方式,需要清晰知道哪类API内部具有注入行为,对软件开发者要求过高,且出错机会较大;一些核心功能的API,实现功能比较复杂,并且没有替代的API,如果调用这些API则会被注入,容易被攻击者通过注入的DLL进行攻击,安全性低,若不调用这些API,则需要自己实现其相应的功能,代价非常大。
技术实现思路
基于此,有必要针对传统的避免调用方式防止注入,出错几率大且安全性低的问题,提供一种防注入的方法,能防止出错且安全性高。此外,还有必要提供一种防注入的装置,能防止出错且安全性高。一种防注入的方法,包括以下步骤:获取应用程序编程接口的调用指令;根据所述调用指令在应用程序编程接口内部读取注册表信息时,进入Hook函数;通过所述Hook函数读取注册表信息,并根据预设策略获取动态链接库信息;加载获取的动态链接库信息到当前进程。一种防注入的装置,包括:调用模块,用于获取应用程序编程接口的调用指令;进入模块,用于根据所述调用指令在应用程序编程接口内部读取注册表信息时,进入Hook函数;获取模块,用于通过所述Hook函数读取注册表信息,并根据预设策略获取动态链接库信息;加载模块,用于加载获取的动态链接库信息到当前进程。上述防注入的方法和装置,调用应用程序编程接口时,通过Hook函数读取注册表信息,并按照预设策略获取动态链接库信息,加载动态链接库信息到当前进程中,通过预设策略筛选了动态链接库,而不是直接由应用程序编程接口读取注册表信息获取动态链接库进行加载,不需人工识别,能防止出错,且能加载应用程序编程接口,因筛选过动态链接库,调用应用程序编程接口安全性高。附图说明图1A为一个实施例中终端的内部结构示意图;图1B为一个实施例中服务器的内部结构示意图;图2为一个实施例中防注入的方法的流程图;图3为一个实施例中使用上述防注入的方法注入动态链接库的框架示意图;图4为一个实施例中通过该Hook函数读取注册表信息,并根据预设策略获取动态链接库信息的具体流程图;图5为一个实施例中防注入的装置的结构框图;图6为另一个实施例中防注入的装置的结构框图;图7为注入第三方的DLL的结果示意图;图8为防止注入第三方的DLL的结果示意图。具体实施方式为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并不用于限定本专利技术。图1A为一个实施例中终端的内部结构示意图。如图1A所示,该终端包括通过系统总线连接的处理器、存储介质、内存和网络接口、声音采集装置、显示屏、扬声器和输入装置。其中,终端的存储介质存储有操作系统,还包括一种防注入的装置,该防注入的装置用于实现一种防注入的方法。存储介质中还存储有白名单和/或黑名单、动态链接库注入信息的注册表位置等,白名单用于记录允许注入的动态链接库的属性信息,黑名单用于记录不允许注入的动态链接库的属性信息。属性信息可包括DLL(DynamicLinkLibrary,动态链接库)的路径、DLL的CLSID信息(ClassIdentity,全局唯一标识符)、DLL的哈希信息等。该处理器用于提供计算和控制能力,支撑整个终端的运行。终端中的内存为存储介质中的防注入的装置的运行提供环境,网络接口用于与服务器进行网络通信,如发送数据请求至服务器,接收服务器返回的数据等。终端的显示屏可以是液晶显示屏或者电子墨水显示屏等,输入装置可以是显示屏上覆盖的触摸层,也可以是终端外壳上设置的按键、轨迹球或触控板,也可以是外接的键盘、触控板或鼠标等。该终端可以是手机、平板电脑或者个人数字助理。本领域技术人员可以理解,图1A中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的终端的限定,具体的终端可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。图1B为一个实施例中服务器的内部结构示意图。如图1B所示,该服务器包括通过系统总线连接的处理器、存储介质、内存和网络接口。其中,该服务器的存储介质存储有操作系统、数据库和防注入的装置,数据库中存储有白名单和/或黑名单、动态链接库注入信息的注册表位置等,白名单用于记录允许注入的动态链接库的属性信息,黑名单用于记录不允许注入的动态链接库的属性信息。属性信息可包括DLL(DynamicLinkLibrary,动态链接库)的路径、DLL的CLSID信息(ClassIdentity,全局唯一标识符)、DLL的哈希信息等。该防注入的装置用于实现适用于服务器的一种防注入的方法。该服务器的处理器用于提供计算和控制能力,支撑整个服务器的运行。该服务器的内存为存储介质中的防注入的装置的运行提供环境。该服务器的网络接口用于据以与外部的终端通过网络连接通信,比如接收终端发送的数据请求以及向终端返回压缩后的数据等。服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现。本领域技术人员可以理解,图1B中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的服务器的限定,具体的服务器可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。图2为一个实施例中防注入的方法的流程图。图2中的防注入的方法可应用于终端或服务器上。如图2所示,一种防注入的方法,包括以下步骤:步骤202,获取应用程序编程接口的调用指令。具体地,程序调用应用程序编程接口时,产生调用指令。步骤204,根据该调用指令在应用程序编程接口内部读取注册表信息时,进入Hook函数。具体地,程序调用API时,API内部会读取注册表信息。读取注册表信息是读取各个注册表位置上的信息。步骤206,通过该Hook函数读取注册表信息,并根据预设策略获取动态链接库信息。具体地,Hook函数读取注册表信息后,根据预设策略从注册表信息中获取动态链接库信息。预设策略可根据需要设定。在一个实施例中,预设策略可包括白名单和/或黑名单。其中,白名单用于记录允许注入的动态链接库的属性信息,该黑名单用于记录不允许注入的动态链接库的属性信息。属性信息可包括DLL的路径、DLL的CLSID(全局唯一标识符)信息、DLL的哈希信息等中的一种或多种。DLL的路径是指动态链接库所处的位置,例如D:\\programfiles/abc。DLL的CLSID是指windows系统对于不同的应用程序、文件类型、对象等以及各种系统组件分配的一个唯一表示它的ID代码,用于对其身份的标示本文档来自技高网...
防注入的方法和装置

【技术保护点】
一种防注入的方法,包括以下步骤:获取应用程序编程接口的调用指令;根据所述调用指令在应用程序编程接口内部读取注册表信息时,进入Hook函数;通过所述Hook函数读取注册表信息,并根据预设策略获取动态链接库信息;加载获取的动态链接库信息到当前进程。

【技术特征摘要】
1.一种防注入的方法,包括以下步骤:获取应用程序编程接口的调用指令;根据所述调用指令在应用程序编程接口内部读取注册表信息时,进入Hook函数;通过所述Hook函数读取注册表信息,并根据预设策略获取动态链接库信息;加载获取的动态链接库信息到当前进程。2.根据权利要求1所述的方法,其特征在于,所述通过所述Hook函数读取注册表信息,并根据预设策略获取动态链接库信息的步骤包括:通过所述Hook函数读取注册表信息,判断读取的注册表位置是否为预先记录的与注入相关的注册表位置;若判断出读取的注册表位置为预先记录的与注入相关的注册表位置,则根据所述调用指令分析读取到的动态链接库信息,根据预设策略从读取到的动态链接库信息中剔除不需要注入的动态链接库,并获取剩余的动态链接库;所述加载获取的动态链接库信息到当前进程的步骤包括:加载所述剩余的动态链接库到当前进程。3.根据权利要求2所述的方法,其特征在于,通过所述Hook函数读取注册表信息,并根据预设策略获取动态链接库信息的步骤包括还包括:若判断出读取的注册表位置不为预先记录的与注入相关的注册表位置,则根据调用指令直接获取动态链接库信息。4.根据权利要求1至3中任一项所述的方法,其特征在于,所述预设策略包括数字签名、白名单和黑名单中一种或两种以上,所述白名单用于记录允许注入的动态链接库的属性信息,所述黑名单用于记录不允许注入的动态链接库的属性信息;通过所述Hook函数读取注册表信息,并根据预设策略获取动态链接库信息的步骤包括:通过所述Hook函数读取注册表信息,并根据数字签名、白名单和黑名单中
\t一种或两种以上筛选得到允许注入的动态链接库。5.根据权利要求1所述的方法,其特征在于,所述预设策略为不允许任何动态链接库注入;通过所述Hook函数读取注册表信息,并根据预设策略获取动态链接库信息的步骤包括:通过所述Hook函数读取注册表信息,并根据预设策略获取空信息给应用程序编程接口。6....

【专利技术属性】
技术研发人员:陈铭霖胡训国黄磊
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1