CN109901937A - 隐藏api的反射调用方法、装置、计算机设备及存储介质 - Google Patents
隐藏api的反射调用方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN109901937A CN109901937A CN201910049473.3A CN201910049473A CN109901937A CN 109901937 A CN109901937 A CN 109901937A CN 201910049473 A CN201910049473 A CN 201910049473A CN 109901937 A CN109901937 A CN 109901937A
- Authority
- CN
- China
- Prior art keywords
- target class
- reflection
- loader
- api
- rank
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 66
- 238000012986 modification Methods 0.000 claims abstract description 24
- 230000004048 modification Effects 0.000 claims abstract description 24
- 238000013459 approach Methods 0.000 claims description 55
- 238000001514 detection method Methods 0.000 claims description 7
- 238000004590 computer program Methods 0.000 claims description 6
- 239000000284 extract Substances 0.000 claims description 6
- 238000000605 extraction Methods 0.000 claims description 4
- 230000008569 process Effects 0.000 abstract description 8
- 238000011161 development Methods 0.000 abstract description 5
- 238000012545 processing Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 238000005538 encapsulation Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000005856 abnormality Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000000149 penetrating effect Effects 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000001755 vocal effect Effects 0.000 description 1
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了一种隐藏API的反射调用方法、装置、计算机设备及计算机可读存储介质,所述隐藏API的反射调用方法包括:获取调用信息,从所述调用信息中提取目标类,所述目标类用于反射调用指定隐藏API;检测所述目标类在运行环境中被加载时的加载器级别;如果所述目标类的加载器级别为非系统级别,则在所述调用信息中为所述目标类进行加载器级别的修改;基于完成修改的调用信息中目标类,进行指定隐藏API的反射调用。采用本发明所提供的隐藏API的反射调用方法、装置、计算机设备及计算机可读存储介质解决了现有技术中隐藏API的反射调用过于复杂的问题,提高了开发人员的开发效率,有效地优化了研发过程。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种隐藏API的反射调用方法、装置、计算机设备及计算机可读存储介质。
背景技术
随着计算机技术的发展,在进行安卓Android系统开发时,越来越多的API(Application Program Interface,应用程序接口)可供开发人员直接调用,为开发人员提供了便利,进而大大提高了开发人员的开发效率。
然而,可能是API尚存在不稳定因素,或者是API提供者并不想对外开放API,故而,在Android源代码中仍存在部分隐藏API是无法供开发人员直接调用的。
为此,提出了一种反射调用隐藏API的方法,但是,对于开发人员而言,该种反射调用方法相对于直接调用方法,需要额外编写隐藏API的空代码,过于复杂。
发明内容
为了解决相关技术中存在的隐藏API的反射调用过于复杂的问题,本发明各实施例提供一种隐藏API的反射调用方法、装置、计算机设备及计算机可读存储介质。
其中,本发明所采用的技术方案为:
第一方面,一种隐藏API的反射调用方法,包括:获取调用信息,从所述调用信息中提取目标类,所述目标类用于反射调用指定隐藏API;检测所述目标类在运行环境中被加载时的加载器级别;如果所述目标类的加载器级别为非系统级别,则在所述调用信息中为所述目标类进行加载器级别的修改;基于完成修改的调用信息中所述目标类,进行指定隐藏API的反射调用。
第二方面,一种隐藏API的反射调用装置,包括:目标类提取模块,用于获取调用信息,从所述调用信息中提取目标类,所述目标类用于反射调用指定隐藏API;加载器检测模块,用于检测所述目标类在运行环境中被加载时的加载器级别;信息修改模块,用于如果所述目标类的加载器级别为非系统级别,则在所述调用信息中为所述目标类进行加载器级别的修改;反射调用模块,用于基于完成修改的调用信息中所述目标类,进行指定隐藏API的反射调用。
在一示例性实施例中,所述装置还包括:第二反射调用模块,用于如果所述目标类的加载器级别为系统级别,则基于未修改的调用信息中所述目标类,进行指定隐藏API的反射调用。
在一示例性实施例中,反射调用模块,包括:方法查找单元,用于根据所述指定隐藏API的接口标识,从所述目标类中查找得到被赋值占用的目标方法;第一参数获取单元,用于根据所述目标方法获取对应的目标参数;反射调用单元,用于通过所述目标方法及其对应的目标参数,反射调用所述指定隐藏API。
在一示例性实施例中,所述加载器检测模块包括:栈回溯单元,用于根据所述目标类回溯调用栈;加载器确定单元,用于通过所述调用栈的回溯,获取所述目标类所描述源代码被调用时的调用结果;加载器级别判断单元,用于根据所述调用结果确定所述目标类在所述运行环境中被加载时的加载器,以判断所述目标类的加载器级别是否为系统级别。
在一示例性实施例中,所述装置还包括:目标类添加模块,用于如果所述调用信息中未提取到所述目标类,则在所述调用信息中添加所述目标类。
在一示例性实施例中,所述目标类添加模块包括:目标类定义单元,用于将未被占用的类作为反射调用所述指定隐藏PAI的所述目标类;第二参数获取单元,用于在所述目标类中查找未被占用的目标方法,并根据所述目标方法获取对应的目标参数;封装单元,用于将所述目标类、所述目标方法、以及所述目标方法对应的目标参数封装至所述调用信息。
在一示例性实施例中,所述目标类添加模块还包括:赋值占用单元,用于根据所述指定隐藏API的接口标识,对未被占用的目标类进行赋值占用,和,对未被占用的目标方法进行赋值占用。
一种计算机设备,包括处理器及存储器,所述存储器上存储有计算机可读指令,所述计算机可读指令被所述处理器执行时实现如上所述的隐藏API的反射调用方法。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的隐藏API的反射调用方法。
在上述技术方案中,获取调用信息,从调用信息中提取用于反射调用指定隐藏API的目标类,并检测该目标类在运行环境中被加载时的加载器级别,如果该目标类的加载器级别为非系统级别,则在调用信息中为该目标类进行加载器级别的修改,最终基于完成修改的调用信息中目标类,进行指定隐藏API的反射调用,由此,基于目标类的加载器级别的修改,在进行指定隐藏API的反射调用时不必额外编写空代码,有效地解决了现有技术中存在的隐藏API的反射调用过于复杂的问题。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并于说明书一起用于解释本发明的原理。
图1是根据一示例性实施例示出的一种计算机设备的硬件结构框图。
图2是根据一示例性实施例示出的一种隐藏API的反射调用方法的流程图。
图3是图2对应实施例中步骤330在一个实施例的流程图。
图4是根据一示例性实施例示出的目标类添加过程的方法流程图。
图5是图2对应实施例中步骤370在一个实施例的流程图。
图6是根据一示例性实施例示出的一种隐藏API的反射调用装置的框图。
图7是根据一示例性实施例示出的一种计算机设备的框图。
通过上述附图,已示出本发明明确的实施例,后文中将有更详细的描述,这些附图和文字描述并不是为了通过任何方式限制本发明构思的范围,而是通过参考特定实施例为本领域技术人员说明本发明的概念。
具体实施方式
这里将详细地对示例性实施例执行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
请参阅图1,图1是根据一示例性实施例示出的一种计算机设备的框图。该种计算机设备中部署有冯诺依曼体系结构,例如,该种计算机设备可以是台式电脑、、笔记本电脑、服务器等。
需要说明的是,该种计算机设备只是一个适配于本发明的示例,不能认为是提供了对本发明的使用范围的任何限制。该种计算机设备也不能解释为需要依赖于或者必须具有图1中示出的示例性的计算机设备200中的一个或者多个组件。
计算机设备200的硬件结构可因配置或者性能的不同而产生较大的差异,如图1所示,计算机设备200包括:电源210、接口230、至少一存储器250、以及至少一中央处理器(CPU,Central Processing Units)270。
具体地,电源210用于为计算机设备200上的各硬件设备提供工作电压。
接口230包括至少一有线或无线网络接口231、至少一串并转换接口233、至少一输入输出接口235以及至少一USB接口237等,用于与外部设备通信。
存储器250作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源包括操作系统251、应用程序253及数据255等,存储方式可以是短暂存储或者永久存储。
其中,操作系统251用于管理与控制计算机设备200上的各硬件设备以及应用程序253,以实现中央处理器270对海量数据255的计算与处理,其可以是Windows ServerTM、MacOS XTM、UnixTM、LinuxTM、FreeBSDTM等。
应用程序253是基于操作系统251之上完成至少一项特定工作的计算机程序,其可以包括至少一模块(图1中未示出),每个模块都可以分别包含有对计算机设备200的一系列计算机可读指令。
数据255可以是存储于磁盘中的照片、图片等。
中央处理器270可以包括一个或多个以上的处理器,并设置为通过总线与存储器250通信,用于运算与处理存储器250中的海量数据255。
如上面所详细描述的,适用本发明的计算机设备200将通过中央处理器270读取存储器250中存储的一系列计算机可读指令的形式来完成隐藏API的反射调用方法。
此外,通过硬件电路或者硬件电路结合软件也能同样实现本发明,因此,实现本发明并不限于任何特定硬件电路、软件以及两者的组合。
请参阅图2,在一示例性实施例中,一种隐藏API的反射调用方法适用于计算机设备,该计算机设备的结构可以如图1所示。
该种隐藏API的反射调用方法可以由计算机设备执行,可以包括以下步骤:
步骤310,获取调用信息,从所述调用信息中提取目标类。
首先,调用信息存储于计算机设备,用于控制应用程序的隐藏API的反射调用。可以理解为,应用程序的每一个隐藏API都在调用信息中存储了相关信息,以便基于该相关信息实现反射调用。
调用信息的获取,与调用信息的存储路径有关。具体地,从配置文件中获取调用信息的存储路径,根据该存储路径指向的计算机设备中的存储位置读取调用信息。
需要说明的是,调用信息,是在应用程序安装至计算机设备时,写入配置文件的,那么,对于计算机设备而言,通过配置文件中的调用信息,便可获知所安装的应用程序提供了哪些可供反射调用的隐藏API。
其次,调用信息至少包括隐藏API的接口标识、以及对应的目标类。其中,接口标识用于唯一地标识隐藏API,目标类则用于反射调用对应的隐藏API。补充说明的是,对于应用程序提供者而言,如果允许哪些隐藏API被开发人员反射调用,便会将该些隐藏API的接口标识、以及对应的目标类封装至调用信息。
由上可知,在获取到调用信息之后,便可从获取到的调用信息中提取得到指定隐藏API对应的目标类,以便于后续基于该目标类进行该指定隐藏PAI的反射调用。
步骤330,检测所述目标类在运行环境中被加载时的加载器级别。
如前所述,关于隐藏API的反射调用,需要额外编写隐藏API的空代码。主要原因是由于绝大部分的隐藏API,其所对应的目标类并非由系统级别的加载器加载至运行环境中,而是由非系统级别的加载器加载至运行环境中,那么,在进行反射调用时,会涉及到额外编写的隐藏API的空代码。
基于此,为了避免额外地编写隐藏API的空代码,本实施例中,首先对目标类在运行环境中被加载时的加载器级别进行检测,以此判断目标类是由哪种级别的加载器加载至运行环境中。
如果目标类的加载器级别为系统级别,由于反射调用并不涉及额外编写的隐藏API的空代码,故而,可直接对指定隐藏API进行反射调用。
反之,如果目标类的加载器级别为非系统级别,则执行步骤350。
可选地,目标类的加载器级别通过数字唯一地标识,例如,0表示系统级别的加载器,1表示非系统级别的加载器。当然,在其他实施例中,目标类的加载器级别还可通过字符等形式进行标识,本实施例并非对此构成具体限定。
步骤350,如果所述目标类的加载器级别为非系统级别,则在所述调用信息中为所述目标类进行加载器级别的修改。
修改,是指在调用信息中,将目标类的加载器级别由非系统级别修改为系统级别,以此欺骗Android系统进行反射调用指定隐藏API的目标类的加载器级别为系统级别,同时避免Android系统异常告警。
应当说明的是,修改时,由于目标类已经由非系统级别的加载器加载至了运行环境,故而,即使是之后加载该目标类的加载器级别由非系统级别修改为系统级别,也不会导致Android系统崩溃。
步骤370,基于完成修改的调用信息中所述目标类,进行指定隐藏API的反射调用。
待完成修改,目标类的加载器级别修改为系统级别,那么,在进行反射调用时,Android系统便认为加载目标类的加载器级别为系统级别,则直接对指定隐藏API进行反射调用,而不涉及额外编写的隐藏API的空代码,从而便可避免额外地编写隐藏API的空代码。
通过如上所述的过程,基于目标类的加载器级别的修改,在进行指定隐藏API的反射调用时不必额外编写空代码,有效地降低了隐藏API在反射调用过程中的复杂度,进而大大提升了开发效率。
此外,基于系统级别的加载器,在进行隐藏API的反射调用时,调用的访问权限得到了有效的扩展,不仅适用于public和default的方法和字段,而且适用于protected和private的方法和字段,大大提供了隐藏API的反射调用方法的通用性和适应性。
请参阅图3,在一示例性实施例中,步骤330可以包括以下步骤:
步骤331,根据所述目标类回溯调用栈。
步骤333,通过所述调用栈的回溯,获取所述目标类所描述源代码被调用时的调用结果。
应当理解,目标类,实质是对实现某种功能的源代码的描述,不同目标类,所描述的源代码有所区别。
对于Android系统而言,所有代码调用都是通过调用栈实现的,换句话说,目标类所描述源代码的调用也是在调用栈上发生的。具体地,调用栈会向目标类传递一些参数,以便于调用栈能够执行目标类所描述的源代码,当目标类所描述源代码执行完毕时,调用结果被返回调用栈,从而完成目标类所描述源代码的调用。
在上述过程中,调用栈能够执行目标类所描述的源代码的前提是,目标类已经通过加载器加载至运行环境中。
因此,通过回溯调用栈,便可获取到目标类所描述源代码被调用时的调用结果,进而获知目标类是由哪个加载器加载至运行环境中的。
步骤335,根据所述调用结果确定所述目标类在所述运行环境中被加载时的加载器,以判断所述目标类的加载器级别是否为系统级别。
调用结果,不仅记录了目标类所描述源代码在运行环境中被调用时的结果,同时记录了目标类被加载至运行环境的加载器,由此,便可根据调用结果的记录确定目标类在运行环境中被加载时的加载器,进而确定该加载器的级别是系统级别还是非系统级别。
在上述实施例的作用下,实现了目标类的加载器级别的检测,使得后续调用信息中目标类的加载器级别的修改得以实现,进而有利于避免额外隐藏API的空代码的编写。
在一示例性实施例中,如上所述的方法还可以包括以下步骤:
如果所述调用信息中未提取到所述目标类,则在所述调用信息中添加所述目标类。
可以理解,对于应用程序提供者而言,如果不期望某些隐藏API被开发人反射调用,则不会在调用信息中添加隐藏API对应的目标类,那么,从调用信息中便提取不到该些隐藏API对应的目标类。
基于此,对于开发人员而言,如果期望反射调用指定隐藏API,只要预先获知该指定隐藏API的接口标识,便可在调用信息中为该指定隐藏API添加对应的目标类,以便于后续能够反射调用该指定隐藏API。
具体而言,如图4所示,在一实施例中,目标类添加过程可以包括以下步骤:
步骤410,将未被占用的类作为反射调用所述指定隐藏API的所述目标类。
未被占用的类,即表示该类尚未用于其他隐藏API的反射调用,由此,便可将该未被占用的类用于指定隐藏API的反射调用,即作为目标类。
步骤430,在所述目标类中查找未被占用的目标方法,并根据所述目标方法获取对应的目标参数。
目标类中包含多种方法,如果同一种方法被用于不同隐藏API的反射调用会导致Android系统异常告警,也就是说,已被占用的方法不允许被再次占用。
因此,需要调用目标类中未被占用的方法,即目标方法。
在目标方法的查找过程中,便可同时获取到目标方法对应的目标参数,以便于为反射调用指定隐藏API调用该目标方法时,调用该目标方法的全部内容:目标方法以及对应的目标参数。
步骤450,将所述目标类、所述目标方法、以及所述目标方法对应的目标参数封装至所述调用信息。
在获取到目标类、目标方法、以及目标方法对应的目标参数之后,便可在调用信息中为指定隐藏API添加对应的目标类,即将该目标类封装至调用信息。
通过上述过程,无论应用程序提供者是否在调用信息中提供了目标类,对于开发人员而言,能够反射调用任何的隐藏API,进一步地提升了开发效率。
进一步地,在一示例性实施例中,目标类添加过程还可以包括以下步骤:
根据所述指定隐藏API的接口标识,对未被占用的目标类进行赋值占用,和,对未被占用的目标方法进行赋值占用。
为了防止在其他隐藏API的反射调用时,该目标类被再次调用,便需要为该目标类进行赋值占用,同理,为了防止在其他隐藏API反射调用时,该目标方法被再次调用,也需要对该目标方法进行赋值占用,那么,在其他隐藏API的反射调用,只会从其余剩余的未被占用的类、方法中选择合适目标类、目标方法。
可选地,赋值占用,是指将指定隐藏API的接口标识赋值给未被占用的目标类、目标方法,以此表示该目标类、目标方法已被用于指定隐藏API的反射调用,也即是,该目标类、目标方法已被指定隐藏API占用。
在上述过程中,通过赋值占用,避免目标类、目标方法的重复调用,进而有利于提高指定隐藏API反射调用的有效率。
请参阅图5,在一示例性实施例中,步骤370可以包括以下步骤:
步骤371,根据所述指定隐藏API的接口标识,从所述目标类中查找得到被赋值占用的目标方法。
如前所述,反射调用指定隐藏API,实质是调用该指定隐藏API所对应目标类中的目标方法、以及目标方法对应的目标参数。
基于此,在对指定隐藏API进行反射调用时,首先需要确定被调用的目标方法,也即是,确定被指定隐藏API占用的目标方法。
具体地,在目标类已被赋值占用的方法中,根据指定隐藏API的接口标识进行匹配查找。
如果存在与指定隐藏API的接口标识相同赋值的方法,则视该方法为目标方法。
步骤373,根据所述目标方法获取对应的目标参数。
步骤375,通过所述目标方法及其对应的目标参数,反射调用所述指定隐藏API。
在目标方法的查找过程中,便可同时获取到目标方法对应的目标参数,以便于为反射调用指定隐藏API调用该目标方法时,调用该目标方法的全部内容:目标方法及其对应的目标参数。
通过上述过程,实现了隐藏API的反射调用机制,达到了直接调用API的效果,使得更多的API可供开发人员直接调用,为开发人员提供了便利,进而大大提高了开发人员的开发效率。
下述为本发明装置实施例,可以用于执行本发明所涉及的隐藏API的反射调用方法。对于本发明装置实施例中未披露的细节,请参照本发明所涉及的隐藏API的反射调用方法的方法实施例。
请参阅图6,在一示例性实施例中,一种隐藏API的反射调用装置900包括但不限于:目标类提取模块910、加载器检测模块930、信息修改模块950和反射调用模块970。
其中,目标类提取模块910,用于获取调用信息,从所述调用信息中提取目标类,所述目标类用于反射调用指定隐藏API。
加载器检测模块930,用于检测所述目标类在运行环境中被加载时的加载器级别。
信息修改模块950,用于如果所述目标类的加载器级别为非系统级别,则在所述调用信息中为所述目标类进行加载器级别的修改。
反射调用模块970,用于基于完成修改的调用信息中所述目标类,进行指定隐藏API的反射调用。
在一示例性实施例中,所述装置900还包括但不限于:第二反射调用模块。
其中,第二反射调用模块,用于如果所述目标类的加载器级别为系统级别,则基于未修改的调用信息中所述目标类,进行指定隐藏API的反射调用。
在一示例性实施例中,反射调用模块970包括但不限于:方法查找单元、第一参数获取单元和反射调用单元。
其中,方法查找单元,用于根据所述指定隐藏API的接口标识,从所述目标类中查找得到被赋值占用的目标方法。
第一参数获取单元,用于根据所述目标方法获取对应的目标参数。
反射调用单元,用于通过所述目标方法及其对应的目标参数,反射调用所述指定隐藏API。
在一示例性实施例中,所述加载器检测模块930包括但不限于:栈回溯单元、加载器确定单元和加载器级别判断单元。
其中,栈回溯单元,用于根据所述目标类回溯调用栈。
加载器确定单元,用于通过所述调用栈的回溯,获取所述目标类所描述源代码被调用时的调用结果。
加载器级别判断单元,用于根据所述调用结果确定所述目标类在所述运行环境中被加载时的加载器,以判断所述目标类的加载器级别是否为系统级别。
在一示例性实施例中,所述装置900还包括但不限于:目标类添加模块。
其中,目标类添加模块,用于如果所述调用信息中未提取到所述目标类,则在所述调用信息中添加所述目标类。
在一示例性实施例中,所述目标类添加模块包括但不限于:目标类定义单元、第二参数获取单元和封装单元。
其中,目标类定义单元,用于将未被占用的类作为反射调用所述指定隐藏PAI的所述目标类。
第二参数获取单元,用于在所述目标类中查找未被占用的目标方法,并根据所述目标方法获取对应的目标参数。
封装单元,用于将所述目标类、所述目标方法、以及所述目标方法对应的目标参数封装至所述调用信息。
在一示例性实施例中,所述目标类添加模块还包括但不限于:赋值占用单元。
其中,赋值占用单元,用于根据所述指定隐藏API的接口标识,对未被占用的目标类进行赋值占用,和,对未被占用的目标方法进行赋值占用。
需要说明的是,上述实施例所提供的隐藏API的反射调用装置在进行隐藏API的反射调用处理时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即隐藏API的反射调用装置的内部结构将划分为不同的功能模块,以完成以上描述的全部或者部分功能。
另外,上述实施例所提供的隐藏API的反射调用装置与隐藏API的反射调用方法的实施例属于同一构思,其中各个模块执行操作的具体方式已经在方法实施例中进行了详细描述,此处不再赘述。
请参阅图7,在一示例性实施例中,一种计算机设备1000,包括至少一处理器1001、至少一存储器1002、以及至少一通信总线1003。
其中,存储器1002上存储有计算机可读指令,处理器1001通过通信总线1003读取存储器1002中存储的计算机可读指令。
该计算机可读指令被处理器1001执行时实现上述各实施例中的隐藏API的反射调用方法。
在一示例性实施例中,一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各实施例中的隐藏API的反射调用方法。
上述内容,仅为本发明的较佳示例性实施例,并非用于限制本发明的实施方案,本领域普通技术人员根据本发明的主要构思和精神,可以十分方便地进行相应的变通或修改,故本发明的保护范围应以权利要求书所要求的保护范围为准。
Claims (10)
1.一种隐藏API的反射调用方法,其特征在于,包括:
获取调用信息,从所述调用信息中提取目标类,所述目标类用于反射调用指定隐藏API;
检测所述目标类在运行环境中被加载时的加载器级别;
如果所述目标类的加载器级别为非系统级别,则在所述调用信息中为所述目标类进行加载器级别的修改;
基于完成修改的调用信息中所述目标类,进行指定隐藏API的反射调用。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
如果所述目标类的加载器级别为系统级别,则基于未修改的调用信息中所述目标类,进行指定隐藏API的反射调用。
3.如权利要求1或2所述的方法,其特征在于,所述进行指定隐藏API的反射调用,包括:
根据所述指定隐藏API的接口标识,从所述目标类中查找得到被赋值占用的目标方法;
根据所述目标方法获取对应的目标参数;
通过所述目标方法及其对应的目标参数,反射调用所述指定隐藏API。
4.如权利要求1所述的方法,其特征在于,所述检测所述目标类在运行环境中被加载时的加载器级别,包括:
根据所述目标类回溯调用栈;
通过所述调用栈的回溯,获取所述目标类所描述源代码被调用时的调用结果;
根据所述调用结果确定所述目标类在所述运行环境中被加载时的加载器,以判断所述目标类的加载器级别是否为系统级别。
5.如权利要求1所述的方法,其特征在于,所述方法还包括:
如果所述调用信息中未提取到所述目标类,则在所述调用信息中添加所述目标类。
6.如权利要求5所述的方法,其特征在于,所述在所述调用信息中添加所述目标类,包括:
将未被占用的类作为反射调用所述指定隐藏API的所述目标类;
在所述目标类中查找未被占用的目标方法,并根据所述目标方法获取对应的目标参数;
将所述目标类、所述目标方法、以及所述目标方法对应的目标参数封装至所述调用信息。
7.如权利要求6所述的方法,其特征在于,所述在所述调用信息中添加所述目标类,还包括:
根据所述指定隐藏API的接口标识,对未被占用的类进行赋值占用,和,对未被占用的目标方法进行赋值占用。
8.一种隐藏API的反射调用装置,其特征在于,包括:
目标类提取模块,用于获取调用信息,从所述调用信息中提取目标类,所述目标类用于反射调用指定隐藏API;
加载器检测模块,用于检测所述目标类在运行环境中被加载时的加载器级别;
信息修改模块,用于如果所述目标类的加载器级别为非系统级别,则在所述调用信息中为所述目标类进行加载器级别的修改;
反射调用模块,用于基于完成修改的调用信息中所述目标类,进行指定隐藏API的反射调用。
9.一种计算机设备,其特征在于,包括:
处理器;及
存储器,所述存储器上存储有计算机可读指令,所述计算机可读指令被所述处理器执行时实现如权利要求1至7中任一项所述的隐藏API的反射调用方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述的隐藏API的反射调用方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910049473.3A CN109901937A (zh) | 2019-01-18 | 2019-01-18 | 隐藏api的反射调用方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910049473.3A CN109901937A (zh) | 2019-01-18 | 2019-01-18 | 隐藏api的反射调用方法、装置、计算机设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109901937A true CN109901937A (zh) | 2019-06-18 |
Family
ID=66943880
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910049473.3A Pending CN109901937A (zh) | 2019-01-18 | 2019-01-18 | 隐藏api的反射调用方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109901937A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110502288A (zh) * | 2019-08-19 | 2019-11-26 | Oppo广东移动通信有限公司 | 用于第三方应用的调用方法、装置、电子设备和存储介质 |
WO2021248310A1 (zh) * | 2020-06-09 | 2021-12-16 | 深圳市欢太科技有限公司 | 服务调用信息的获取方法、装置和服务的漏洞测试方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104376255A (zh) * | 2014-11-28 | 2015-02-25 | 北京奇虎科技有限公司 | 应用程序运行控制方法与装置 |
CN104462879A (zh) * | 2014-11-28 | 2015-03-25 | 北京奇虎科技有限公司 | 应用程序免Root运行控制方法与装置 |
CN108647061A (zh) * | 2018-04-24 | 2018-10-12 | 北京奇虎科技有限公司 | 系统隐藏方法的调用方法、装置和计算设备 |
-
2019
- 2019-01-18 CN CN201910049473.3A patent/CN109901937A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104376255A (zh) * | 2014-11-28 | 2015-02-25 | 北京奇虎科技有限公司 | 应用程序运行控制方法与装置 |
CN104462879A (zh) * | 2014-11-28 | 2015-03-25 | 北京奇虎科技有限公司 | 应用程序免Root运行控制方法与装置 |
CN108647061A (zh) * | 2018-04-24 | 2018-10-12 | 北京奇虎科技有限公司 | 系统隐藏方法的调用方法、装置和计算设备 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110502288A (zh) * | 2019-08-19 | 2019-11-26 | Oppo广东移动通信有限公司 | 用于第三方应用的调用方法、装置、电子设备和存储介质 |
WO2021248310A1 (zh) * | 2020-06-09 | 2021-12-16 | 深圳市欢太科技有限公司 | 服务调用信息的获取方法、装置和服务的漏洞测试方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10768919B2 (en) | Package installation on a host file system using a container | |
CN107797923B (zh) | 代码覆盖率分析方法及应用服务器 | |
CN109446063A (zh) | 接口测试方法、装置、计算机设备和存储介质 | |
CN110147320A (zh) | 接口测试方法、装置及电子设备 | |
CN107800757B (zh) | 用户行为记录方法及装置 | |
CN109783351A (zh) | 界面测试方法、装置及计算机可读存储介质 | |
CN104135520B (zh) | 一种识别安卓终端的方法以及装置 | |
CN110968437A (zh) | 一种基于Java智能合约的单个合约并行执行的方法、装置、设备及介质 | |
CN106055469A (zh) | 一种基于代码注入的移动端应用测试系统及方法 | |
CN109901937A (zh) | 隐藏api的反射调用方法、装置、计算机设备及存储介质 | |
CN109635993A (zh) | 基于预测模型的操作行为监控方法及装置 | |
CN110515758A (zh) | 一种故障定位方法、装置、计算机设备及存储介质 | |
CN108376110A (zh) | 一种自动检测方法、系统及终端设备 | |
CN103812982B (zh) | 一种跨操作系统实现计算机监控测试手机客户端的方法和系统 | |
CN107992402A (zh) | 日志管理方法及日志管理装置 | |
CN103176786A (zh) | 一种基于插件的安全配置检查框架及其构造方法 | |
CN105138366A (zh) | 一种识别软件的静默安装的方法与装置 | |
CN116974581B (zh) | 代码生成方法、装置、电子设备和存储介质 | |
CN110442636B (zh) | 一种数据的读写方法、装置及数据读写设备 | |
CN107621945A (zh) | 一种确定ios设备的标识的方法及装置 | |
US7644316B2 (en) | System, method and program for managing browser scripts sent from server to client | |
CN106302011A (zh) | 基于多端的测试方法及终端 | |
CN112181827A (zh) | 软件图形接口测试方法、装置及软件开发系统 | |
CN106528658B (zh) | 应用文件的查找方法及装置 | |
US20160357822A1 (en) | Using locations to define moments |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
CB02 | Change of applicant information |
Address after: 201, room 518000, building A, No. 1, front Bay Road, Qianhai Shenzhen Guangdong Shenzhen Hong Kong cooperation zone (Qianhai business secretary) Applicant after: PING AN PUHUI ENTERPRISE MANAGEMENT Co.,Ltd. Address before: 518000 Guangdong city of Shenzhen province Qianhai Shenzhen Hong Kong cooperation zone before Bay Road No. 1 building 201 room A Applicant before: PING AN PUHUI ENTERPRISE MANAGEMENT Co.,Ltd. |
|
CB02 | Change of applicant information | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20190618 |
|
WD01 | Invention patent application deemed withdrawn after publication |