一种检测Hook的方法、装置、设备及存储介质制造方法及图纸

技术编号:27534270 阅读:18 留言:0更新日期:2021-03-03 11:17
本公开提供一种检测Hook的方法、装置、设备及存储介质,涉及移动终端技术领域,能够解决现有技术中的检测方法不能完全检测出应用程序是否受到Hook攻击的问题。具体技术方案为:首先获取当前应用中当前类的所有加载器,加载器包括类加载器和父类加载器;将加载器进行遍历,检测是否存在Hook框架特征;若是,则确定当前应用受到Hook攻击。本公开用于检测Hook。Hook。Hook。

【技术实现步骤摘要】
一种检测Hook的方法、装置、设备及存储介质


[0001]本公开涉及移动终端
,尤其涉及一种检测Hook的方法、装置、设备及存储介质。

技术介绍

[0002]目前Android应用在日常生活中已经渗透到各种场景,很多企业的网络流量和业务重心也逐渐偏向移动终端。Andorid应用不但方便了用户,也为企业带来了很多业务场景和市场机会。但Android应用的安全风险也不容忽视:市场推广活动可能被黑灰产“薅羊毛”,一夜之间造成巨额损失;VIP付费资源被破解;Android应用网络数据被篡改导致服务器被攻击等等。在这些安全事件中,攻击者常常使用Hook技术(例如xposed、virtualxposed、太极等)来对Android应用进行逆向分析、篡改或双开,从而突破应用限制或篡改程序逻辑达到攻击目的。当然很多企业安全部门也开始针对这些Hook技术进行检测,一旦发现运行环境中存在Hook,则会认为运行环境不安全,可能采取提醒用户或直接退出应用的措施来进行保护。
[0003]现有技术中,一般通过加载特定类、检测是否存在特征文件、检测是否安装特定应用、检测异常堆栈、检测maps文件中是否存在特征文件名等方式来检测应用程序是否受到Hook的攻击。但是这些检测方法还存在明显的缺点,以xposed框架为例:
[0004]通过修改xposed的相关特征字符串即可绕过以上检测方法,使其无法检测出来。因为xposed是开源的,可以根据以上检测点的特征,修改相关字符串,比如把“xposed”相关类名、文件名完全替换成其他字符串,然后再编译生成一个完全没有“xposed”字符串相关特征的定制版Hook工具,即可完全绕过以上检测方法。

技术实现思路

[0005]本公开实施例提供一种检测Hook的方法、装置、设备及存储介质,能够解决现有技术中的检测方法不能完全检测出应用程序是否受到Hook攻击的问题。所述技术方案如下:
[0006]根据本公开实施例的第一方面,提供一种检测Hook的方法,该方法包括:
[0007]获取当前应用中当前类的所有加载器,所述加载器包括类加载器和父类加载器;
[0008]将所述加载器进行遍历,检测是否存在Hook框架特征;
[0009]若是,则确定所述当前应用受到Hook攻击。
[0010]本公开实施例提供的检测Hook的方法,首先获取当前应用中当前类的所有加载器,加载器包括类加载器和父类加载器;将加载器进行遍历,检测是否存在Hook框架特征;若是,则确定当前应用受到Hook攻击。本公开通过相对底层的类加载器及其父类加载器的信息,来针对Hook技术进行检测,使得通过修改相关特征字符串无法绕过,使Hook检测更准确。即使把比如“xposed”相关类名、文件名完全替换成其他字符串,编译生成一个完全没有“xposed”字符串相关特征的定制版Hook工具,使用本方法仍然可以检测得到。
[0011]在一个实施例中,获取当前应用中当前类的所有加载器包括:
[0012]获取当前应用中当前类的类加载器;
[0013]获取所述类加载器的父类加载器,以及根据加载器树结构获取所述父类加载器对应的目标父类加载器,直至所述目标父类加载器为空。
[0014]本公开实施例通过上述方法,能够获取所有类加载器以及父类加载器,有利于后续对类加载器以及父类加载器的信息进行检测。
[0015]在一个实施例中,检测是否存在Hook框架特征包括:
[0016]检测所述加载器的数量是否超过预设阈值。
[0017]在一个实施例中,检测是否存在Hook框架特征包括:
[0018]检测所述加载器中是否存在特征字符串,所述特征字符串用于指示所述加载器中包含所述当前应用自身加载以外的字符串。
[0019]根据本公开实施例的第二方面,提供一种检测Hook的装置,包括:获取模块、检测模块和确定模块;
[0020]所述获取模块,用于获取当前应用中当前类的所有加载器,所述加载器包括类加载器和父类加载器;
[0021]所述检测模块,用于将所述加载器进行遍历,检测是否存在Hook框架特征;
[0022]所述确定模块,用于在所述检测模块的检测结果为是时,确定所述当前应用受到Hook攻击。
[0023]本公开实施例提供的装置,包括获取模块、检测模块和确定模块;获取模块获取当前应用中当前类的所有加载器,加载器包括类加载器和父类加载器;检测模块将加载器进行遍历,检测是否存在Hook框架特征;确定模块在检测模块的检测结果为是时,确定当前应用受到Hook攻击。本公开通过相对底层的类加载器及其父类加载器的信息,来针对Hook技术进行检测,使得通过修改相关特征字符串无法绕过,使Hook检测更准确。即使把比如“xposed”相关类名、文件名完全替换成其他字符串,编译生成一个完全没有“xposed”字符串相关特征的定制版Hook工具,使用本方法仍然可以检测得到。
[0024]在一个实施例中,获取模块,具体用于获取当前应用中当前类的类加载器;获取所述类加载器的父类加载器,以及根据加载器树结构获取所述父类加载器对应的目标父类加载器,直至所述目标父类加载器为空。
[0025]本公开实施例通过上述设置,能够获取所有类加载器以及父类加载器,有利于后续对类加载器以及父类加载器的信息进行检测。
[0026]在一个实施例中,检测模块,具体用于检测所述加载器的数量是否超过预设阈值。
[0027]在一个实施例中,检测模块,还具体用于检测所述加载器中是否存在特征字符串,所述特征字符串用于指示所述加载器中包含所述当前应用自身加载以外的字符串。
[0028]根据本公开实施例的第三方面,提供一种检测Hook的设备,所述检测Hook的设备包括处理器和存储器,所述存储器中存储有至少一条计算机指令,所述指令由所述处理器加载并执行以实现上述任一项所述的检测Hook的方法中所执行的步骤。
[0029]根据本公开实施例的第四方面,提供一种计算机可读存储介质,所述存储介质中存储有至少一条计算机指令,所述指令由处理器加载并执行以实现上述任一项所述的检测Hook的方法中所执行的步骤。
[0030]应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不
能限制本公开。
附图说明
[0031]此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
[0032]图1是本公开实施例提供的一种检测Hook的方法的流程图;
[0033]图2是本公开实施例提供的一种检测Hook的方法的流程图;
[0034]图3是本公开实施例提供的获取类加载器和父类加载的示例代码图;
[0035]图4是本公开实施例提供的一种检测Hook的装置的结构示意图。
具体实施方式
[0036]这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种检测Hook的方法,其特征在于,所述方法包括:获取当前应用中当前类的所有加载器,所述加载器包括类加载器和父类加载器;将所述加载器进行遍历,检测是否存在Hook框架特征;若是,则确定所述当前应用受到Hook攻击。2.根据权利要求1所述的检测Hook的方法,其特征在于,所述获取当前应用中当前类的所有加载器包括:获取当前应用中当前类的类加载器;获取所述类加载器的父类加载器,以及根据加载器树结构获取所述父类加载器对应的目标父类加载器,直至所述目标父类加载器为空。3.根据权利要求1所述的检测Hook的方法,其特征在于,所述检测是否存在Hook框架特征包括:检测所述加载器的数量是否超过预设阈值。4.根据权利要求1所述的检测Hook的方法,其特征在于,所述检测是否存在Hook框架特征包括:检测所述加载器中是否存在特征字符串,所述特征字符串用于指示所述加载器中包含所述当前应用自身加载以外的字符串。5.一种检测Hook的装置,其特征在于,包括:获取模块、检测模块和确定模块;所述获取模块,用于获取当前应用中当前类的所有加载器,所述加载器包括类加载器和父类加载器;所述检测模块,用于将所述加载器进行遍历,检测是否存在Hook框架特征;...

【专利技术属性】
技术研发人员:余俊峰周元钉田铭赵培源
申请(专利权)人:西安四叶草信息技术有限公司
类型:发明
国别省市:

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

1