CN108647061A - 系统隐藏方法的调用方法、装置和计算设备 - Google Patents

系统隐藏方法的调用方法、装置和计算设备 Download PDF

Info

Publication number
CN108647061A
CN108647061A CN201810372669.1A CN201810372669A CN108647061A CN 108647061 A CN108647061 A CN 108647061A CN 201810372669 A CN201810372669 A CN 201810372669A CN 108647061 A CN108647061 A CN 108647061A
Authority
CN
China
Prior art keywords
classloader
goal systems
hidden method
class
functions
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
CN201810372669.1A
Other languages
English (en)
Other versions
CN108647061B (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 Qihoo Technology Co Ltd
Original Assignee
Beijing Qihoo 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 Beijing Qihoo Technology Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN201810372669.1A priority Critical patent/CN108647061B/zh
Publication of CN108647061A publication Critical patent/CN108647061A/zh
Application granted granted Critical
Publication of CN108647061B publication Critical patent/CN108647061B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • G06F9/449Object-oriented method invocation or resolution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading

Landscapes

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

Abstract

本发明提供一种系统隐藏方法的调用方法、装置和计算设备,涉及计算机软件开发技术领域,该方法包括:将目标系统隐藏方法对应的类的类加载器设置为启动类加载器;基于设置后的类,调用所述目标系统隐藏方法。本发明通过设置类加载器的类型,能够让系统将开发人员对目标系统隐藏方法的调用识别为是系统允许的,使得开发人员可以方便地使用各种隐藏API的功能,以实现更多的应用效果。且上述系统隐藏方法的调用方法适配性与稳定性较高,能满足绝大多数场景的应用。

Description

系统隐藏方法的调用方法、装置和计算设备
技术领域
本发明涉及计算机软件开发技术领域,具体而言,本发明涉及一种系统隐藏方法的调用方法、装置和计算设备。
背景技术
Android API(Application Programming Interface,应用程序编程接口)是官方提供给Android开发人员的预先定义的方法接口,目的是提供开发人员得以访问一些函数方法的能力。调用Android API,无需访问源码,也无需理解内部工作机制的细节,就可以实现许多功能。
事实上,Android为开发人员提供的API中,包括一些隐藏的API,例如加上@hide标记的类、方法等,在技术上它们并不是系统提供的软件开发工具包的一部分,使得开发人员无法正常访问隐藏的API,尝试在Android系统上使用这些API的应用程序也将无法正常工作。
不过,有时为了实现Android应用程序某些特殊的功能或者效果,隐藏的API往往能发挥意想不到的作用。随着Android系统的广泛应用,用户对Android平台的应用程序在功能上的需求也日益旺盛。这种情况下,开发人员会希望使用这些隐藏的方法、功能来实现一些更高级的效果和功能。
发明内容
本发明的目的旨在至少能解决上述的技术缺陷之一,特别是无法正常调用系统隐藏方法的技术缺陷。
本发明提供了一种系统隐藏方法的调用方法,包括如下步骤:
将目标系统隐藏方法对应的类的类加载器设置为启动类加载器;
基于设置后的类,调用所述目标系统隐藏方法。
可选地,所述将目标系统隐藏方法对应的类的类加载器设置为启动类加载器,包括:
将所述目标系统隐藏方法对应的类的参数类型进行转换处理;
根据转换处理的参数类型,将所述目标系统隐藏方法对应的类的类加载器设置为启动类加载器。
可选地,所述将目标系统隐藏方法对应的类的类加载器设置为启动类加载器,包括:
通过Toclass函数将所述目标系统隐藏方法对应的类的参数类型进行转换处理;
根据转换处理的参数类型,通过SetClassLoader函数将所述目标系统隐藏方法对应的类的类加载器设置为启动类加载器。
可选地,所述将目标系统隐藏方法对应的类的类加载器设置为启动类加载器之前,还包括:
根据Toclass函数的导出符号确定Toclass函数在进程中的地址;
根据SetClassLoader函数的导出符号确定SetClassLoader函数在进程中的地址;
所述将目标系统隐藏方法对应的类的类加载器设置为启动类加载器,包括:
根据确定出的Toclass函数在进程中的地址,调用Toclass函数将所述目标系统隐藏方法对应的类的参数类型进行转换处理;
根据确定出的SetClassLoader函数在进程中的地址,调用SetClassLoader函数将所述目标系统隐藏方法对应的类的类加载器设置为启动类加载器。
可选地,所述目标系统隐藏方法对应的类包括用于反射处理的辅助工具类;
所述调用所述目标系统隐藏方法,包括:
通过所述辅助工具类获取所述目标系统隐藏方法,并进行调用。
可选地,所述调用所述目标系统隐藏方法,包括以下任一情形:
通过所述辅助工具类,基于反射方式获取所述目标系统隐藏方法;
通过所述辅助工具类,基于本地交互方式获取所述目标系统隐藏方法。
本发明还提供了一种系统隐藏方法的调用装置,包括:
设置模块,用于将目标系统隐藏方法对应的类的类加载器设置为启动类加载器;
调用模块,用于基于设置后的类,调用所述目标系统隐藏方法。
可选地,所述设置模块具体用于将所述目标系统隐藏方法对应的类的参数类型进行转换处理;以及,
所述设置模块具体用于根据转换处理的参数类型,将所述目标系统隐藏方法对应的类的类加载器设置为启动类加载器。
可选地,所述设置模块具体用于通过Toclass函数将所述目标系统隐藏方法对应的类的参数类型进行转换处理;以及,
所述设置模块具体用于根据转换处理的参数类型,通过SetClassLoader函数将所述目标系统隐藏方法对应的类的类加载器设置为启动类加载器。
可选地,所述设置模块还具体用于根据Toclass函数的导出符号确定Toclass函数在进程中的地址;以及,
所述设置模块还具体用于根据SetClassLoader函数的导出符号确定SetClassLoader函数在进程中的地址;以及,
所述设置模块具体用于根据确定出的Toclass函数在进程中的地址,调用Toclass函数将所述目标系统隐藏方法对应的类的参数类型进行转换处理;以及,
所述设置模块具体用于根据确定出的SetClassLoader函数在进程中的地址,调用SetClassLoader函数将所述目标系统隐藏方法对应的类的类加载器设置为启动类加载器。
可选地,所述目标系统隐藏方法对应的类包括用于反射处理的辅助工具类;
所述调用模块具体用于通过所述辅助工具类获取所述目标系统隐藏方法,并进行调用。
可选地,所述调用模块具体用于以下任一情形:
通过所述辅助工具类,基于反射方式获取所述目标系统隐藏方法;
通过所述辅助工具类,基于本地交互方式获取所述目标系统隐藏方法。
本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任一项所述的方法。
本发明还提供了一种计算设备,包括:
处理器;以及
存储器,配置用于存储机器可读指令,所述指令在由所述处理器执行时,使得所述处理器执行上述任一项所述的方法。
本发明提供的系统隐藏方法的调用方法、装置和计算设备,通过设置类加载器的类型,能够让系统将开发人员对目标系统隐藏方法的调用识别为是系统允许的,使得开发人员可以方便地使用各种隐藏API的功能,以实现更多的应用效果。且上述系统隐藏方法的调用方法适配性与稳定性较高,能满足绝大多数场景的应用。
本发明附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为本发明实施例提供的系统隐藏方法的调用方法的流程示意图;
图2为本发明实施例提供的系统隐藏方法的调用装置的框架示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
下面结合附图具体介绍本发明实施例的技术方案。
本发明实施例适用于安卓系统中调用系统隐藏API,尤其适用于针对Android P系统,调用系统中的隐藏API。其中,Android P系统为安卓系统的开发者预览版(Preview 1)。
本发明的发明人结合Android P系统的源码进行分析发现,Android P系统的代码实现中,会在所有通过反射方式和JNI(Java Native Interface,Java本地接口)方式调用系统方法的地方判断是否是用户代码调用了系统的隐藏API,如果判断结果返回true,那么说明是用户代码调用了系统的隐藏API,此时Android P系统会通过log(日志)发出警告,并极有可能让用户代码获取到的系统方法函数为空。
具体地,Android P系统要实现上述限制,至少要进行以下两种区分:
(1)必须区分一个系统隐藏方法Method(或Field)对用户代码而言是隐藏的还是公开的,只有用户代码在对隐藏的Method(或Field)进行调用时才需要进行限制。
(2)必须区分系统隐藏方法Method(或Field)是用户代码调用的还是系统代码(例如Activity类)调用的,只有用户代码在对隐藏的Method(或Field)进行调用时才需要进行限制。
可以理解,只有上述两种区分都满足限制条件时,Android P系统才会采取相应的限制措施。
其中,针对第二种区分方式,本发明的发明人了解到,Android P系统是通过回溯调用栈找到调用的隐藏API所在的类Class,判断这个Class的类加载器ClassLoader是否为启动类加载器BootStrapClassLoader,例如借助函数指针fn_caller_in_boot来判断。如果判断结果为是,那么就认为调用该隐藏API的是系统代码,否则就认为用户代码。
基于此,本发明实施例提供了一种系统隐藏方法的调用方法,通过混淆上述第二种区分方式,让系统将用户代码的调用识别为系统代码的调用,以成功绕过Android P系统对此的限制。如图1所示,该方法包括如下步骤:
步骤110:将目标系统隐藏方法对应的类的类加载器设置为启动类加载器。
即将目标系统隐藏方法对应的类的ClassLoader改为BootStrapClassLoader。
本发明的发明人发现,SetClassLoader函数可以为任一个类指定其ClassLoader。该函数的具体声明定义可查看art/runtime/mirror/class.h文件。通过IDA(InteractiveDisassembler,交互式反汇编工具)可以确认该函数位于导出符号表中。这就表示该函数在编译时具有定义,并且可以提供编译使用的符号及其地址。
然而,能够使用SetClassLoader函数为一个类指定ClassLoader的前提是,进行处理的其中一个参数的参数类型为ObjPtr<mirror::Class>,而通常情况下开发人员所使用的类对应的该参数的参数类型为jclass。
因此,本发明实施例中,在使用SetClassLoader函数为一个类指定ClassLoader之前,先要将目标系统隐藏方法对应的类的参数类型进行转换处理。
具体而言,本发明的发明人发现,ToClass函数可以将一个类的参数类型从jclass转化为ObjPtr<mirror::Class>。该函数的具体声明定义可查看art/runtime/well_known_classes.h文件,简单描述如下:
static ObjPtr<mirror::Class>ToClass(jclass global_jclass)
通过IDA(Interactive Disassembler,交互式反汇编工具)可以确认此函数也位于导出符号表中
因此,本发明实施例中,通过Toclass函数将目标系统隐藏方法对应的类的参数类型进行转换处理。
随后,就可以根据转换处理的参数类型,将目标系统隐藏方法对应的类的类加载器设置为启动类加载器。
具体结合上文的内容可知,即根据转换处理的参数类型,通过SetClassLoader函数将目标系统隐藏方法对应的类的类加载器设置为启动类加载器。
实际代码实现中,需要根据Toclass函数的导出符号确定Toclass函数在进程中的地址;以及,根据SetClassLoader函数的导出符号确定SetClassLoader函数在进程中的地址,以便成功使用这两个导出函数的功能。
作为示例地,可以通过dlsym函数,根据动态链接库操作句柄与符号,返回导出符号对应的地址。
进而在本步骤中,可以根据确定出的Toclass函数在进程中的地址,调用Toclass函数将目标系统隐藏方法对应的类的参数类型进行转换处理;以及,根据确定出的SetClassLoader函数在进程中的地址,调用SetClassLoader函数将目标系统隐藏方法对应的类的类加载器设置为启动类加载器。
步骤120:基于设置后的类,调用目标系统隐藏方法。
本发明实施例中,目标系统隐藏方法对应的类可以是目标系统隐藏方法所属的类,当需要使用某个系统隐藏API时,确定该系统隐藏API所属的类,并采用本发明实施例提供的方法进行处理,即可正常调用该系统隐藏API。
或者,可以将开发人员所编写的应用程序中的所有类采用本发明实施例提供的方法进行处理,即可正常调用全部系统隐藏API。
考虑到采用反射方式或JNI方式调用系统隐藏API时,若将有其中任一个用于反射处理的辅助工具类采用本发明实施例提供的方法进行处理,也可以实现正常调用全部系统隐藏API。
因此,本发明实施例中,目标系统隐藏方法对应的类包括用于反射处理的辅助工具类。
这种情况下,本步骤中可以通过该辅助工具类获取目标系统隐藏方法,并进行调用。
为了更清楚地描述本发明实施例,特举例具体实现代码如下:
其中,my_dlsym为自定义的函数,与上述dlsym函数的作用相同,即确定Toclass函数和SetClassLoader函数在进程中的地址。
上述示例中,通过调用定义的makeHiddenApiAccessable函数,就可以将预设的com/test/hidefix/ReflectionHelper类的类加载器设置为启动类加载器。
实际应用时,就可以将ReflectionHelper当做用于反射处理的辅助工具类,将所有获取目标系统隐藏方法Method(或Field)的地方均使用ReflectionHelper进行处理,系统就不会再发出log警告,可以成功调用系统隐藏API。
具体地,包括以下任一情形:
通过该辅助工具类,基于反射方式获取目标系统隐藏方法;
通过该辅助工具类,基于本地交互方式(JNI)获取目标系统隐藏方法。
也就是说,本发明实施例中,通过反射方式或者JNI方式调用系统隐藏API,都需要利用ReflectionHelper辅助工具类来获取目标Method(或Field)。
需要说明的是,本发明实施例中,ReflectionHelper类只能调用系统类,以防ClassLoader的全盘委托机制出现问题。
通过以上方法,本发明实施例能够实现调用任何权限的隐藏API,例如public(公共访问权限)、default(包访问权限)、protected(子类访问权限)、private(类访问权限)等。
由上述介绍可知,本发明实施例提供的系统隐藏方法的调用方法,通过设置类加载器的类型,能够让系统将开发人员对目标系统隐藏方法的调用识别为是系统允许的,使得开发人员可以方便地使用各种隐藏API的功能,以实现更多的应用效果。
并且,上述系统隐藏方法的调用方法仅需要寻找两个导出函数,适配性较高,没有使用钩子函数HOOK,稳定性较高,能满足绝大多数场景的应用。
本发明实施例还提供了一种系统隐藏方法的调用装置,如图2所示,包括:
设置模块210,用于将目标系统隐藏方法对应的类的类加载器设置为启动类加载器;
调用模块220,用于基于设置后的类,调用目标系统隐藏方法。
可选地,设置模块210具体用于将目标系统隐藏方法对应的类的参数类型进行转换处理;以及,
设置模块210具体用于根据转换处理的参数类型,将目标系统隐藏方法对应的类的类加载器设置为启动类加载器。
可选地,设置模块210具体用于通过Toclass函数将目标系统隐藏方法对应的类的参数类型进行转换处理;以及,
设置模块210具体用于根据转换处理的参数类型,通过SetClassLoader函数将目标系统隐藏方法对应的类的类加载器设置为启动类加载器。
可选地,设置模块210还具体用于根据Toclass函数的导出符号确定Toclass函数在进程中的地址;以及,
设置模块210还具体用于根据SetClassLoader函数的导出符号确定SetClassLoader函数在进程中的地址;以及,
设置模块210具体用于根据确定出的Toclass函数在进程中的地址,调用Toclass函数将目标系统隐藏方法对应的类的参数类型进行转换处理;以及,
设置模块210具体用于根据确定出的SetClassLoader函数在进程中的地址,调用SetClassLoader函数将目标系统隐藏方法对应的类的类加载器设置为启动类加载器。
可选地,目标系统隐藏方法对应的类包括用于反射处理的辅助工具类;
调用模块220具体用于通过该辅助工具类获取目标系统隐藏方法,并进行调用。
可选地,调用模块220具体用于以下任一情形:
通过该辅助工具类,基于反射方式获取目标系统隐藏方法;
通过该辅助工具类,基于本地交互方式获取目标系统隐藏方法。
本发明实施例所提供的系统隐藏方法的调用装置可以为设备上的特定硬件或者加载于设备上的软件或固件等。本发明实施例所提供的系统隐藏方法的调用装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容,在此不再赘述。
本发明实施例所提供的系统隐藏方法的调用装置,通过设置类加载器的类型,能够让系统将开发人员对目标系统隐藏方法的调用识别为是系统允许的,使得开发人员可以方便地使用各种隐藏API的功能,以实现更多的应用效果。
并且,上述系统隐藏方法的调用方法仅需要寻找两个导出函数,适配性较高,没有使用钩子函数HOOK,稳定性较高,能满足绝大多数场景的应用。
本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任一项所述的方法。
本发明实施例还提供了一种计算设备,包括:
处理器;以及存储器,配置用于存储机器可读指令,所述指令在由所述处理器执行时,使得所述处理器执行上述任一项所述的方法。
本技术领域技术人员可以理解,这里所使用的“计算设备”可以是便携式、可运输、放置在交通工具(航空、海运和/或陆地)中的,或者适合于和/或配置为在本地运行,和/或以分布形式,运行在地球和/或空间的任何其他位置运行。
本技术领域技术人员可以理解,这里所使用的“计算设备”,其包括但不限于计算机、网络主机、单个网络服务器、多个网络服务器集或多个服务器构成的云。在此,云由基于云计算(Cloud Computing)的大量计算机或网络服务器构成,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个超级虚拟计算机。
其中,存储器可用于存储软件程序以及模块,处理器通过运行存储在存储器的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器可主要包括存储程序区和存储数据区。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
处理器是控制中心,利用各种接口和线路连接整个计算设备的各个部分,通过运行或执行存储在存储器内的软件程序和/或模块,以及调用存储在存储器内的数据,执行各种功能和处理数据,从而对计算设备进行整体监控。可选的,处理器可包括一个或多个处理单元;优选的,处理器可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器中。
这里所使用的“计算设备”还可以包括更多部分等,具体技术细节未揭示的,请参照本发明实施例方法部分,在此不再赘述
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
以上所述仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (10)

1.一种系统隐藏方法的调用方法,其特征在于,包括如下步骤:
将目标系统隐藏方法对应的类的类加载器设置为启动类加载器;
基于设置后的类,调用所述目标系统隐藏方法。
2.根据权利要求1所述的系统隐藏方法的调用方法,其特征在于,所述将目标系统隐藏方法对应的类的类加载器设置为启动类加载器,包括:
将所述目标系统隐藏方法对应的类的参数类型进行转换处理;
根据转换处理的参数类型,将所述目标系统隐藏方法对应的类的类加载器设置为启动类加载器。
3.根据权利要求2所述的系统隐藏方法的调用方法,其特征在于,所述将目标系统隐藏方法对应的类的类加载器设置为启动类加载器,包括:
通过Toclass函数将所述目标系统隐藏方法对应的类的参数类型进行转换处理;
根据转换处理的参数类型,通过SetClassLoader函数将所述目标系统隐藏方法对应的类的类加载器设置为启动类加载器。
4.根据权利要求3所述的系统隐藏方法的调用方法,其特征在于,所述将目标系统隐藏方法对应的类的类加载器设置为启动类加载器之前,还包括:
根据Toclass函数的导出符号确定Toclass函数在进程中的地址;
根据SetClassLoader函数的导出符号确定SetClassLoader函数在进程中的地址;
所述将目标系统隐藏方法对应的类的类加载器设置为启动类加载器,包括:
根据确定出的Toclass函数在进程中的地址,调用Toclass函数将所述目标系统隐藏方法对应的类的参数类型进行转换处理;
根据确定出的SetClassLoader函数在进程中的地址,调用SetClassLoader函数将所述目标系统隐藏方法对应的类的类加载器设置为启动类加载器。
5.根据权利要求1所述的系统隐藏方法的调用方法,其特征在于,
所述目标系统隐藏方法对应的类包括用于反射处理的辅助工具类;
所述调用所述目标系统隐藏方法,包括:
通过所述辅助工具类获取所述目标系统隐藏方法,并进行调用。
6.根据权利要求5所述的系统隐藏方法的调用方法,其特征在于,所述调用所述目标系统隐藏方法,包括以下任一情形:
通过所述辅助工具类,基于反射方式获取所述目标系统隐藏方法;
通过所述辅助工具类,基于本地交互方式获取所述目标系统隐藏方法。
7.一种系统隐藏方法的调用装置,其特征在于,包括:
设置模块,用于将目标系统隐藏方法对应的类的类加载器设置为启动类加载器;
调用模块,用于基于设置后的类,调用所述目标系统隐藏方法。
8.根据权利要求7所述的系统隐藏方法的调用装置,其特征在于,所述设置模块具体用于将所述目标系统隐藏方法对应的类的参数类型进行转换处理;以及,
所述设置模块具体用于根据转换处理的参数类型,将所述目标系统隐藏方法对应的类的类加载器设置为启动类加载器。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1-6任一项所述的方法。
10.一种计算设备,其特征在于,包括:
处理器;以及
存储器,配置用于存储机器可读指令,所述指令在由所述处理器执行时,使得所述处理器执行权利要求1-6任一项所述的方法。
CN201810372669.1A 2018-04-24 2018-04-24 系统隐藏方法的调用方法、装置和计算设备 Active CN108647061B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810372669.1A CN108647061B (zh) 2018-04-24 2018-04-24 系统隐藏方法的调用方法、装置和计算设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810372669.1A CN108647061B (zh) 2018-04-24 2018-04-24 系统隐藏方法的调用方法、装置和计算设备

Publications (2)

Publication Number Publication Date
CN108647061A true CN108647061A (zh) 2018-10-12
CN108647061B CN108647061B (zh) 2021-11-23

Family

ID=63747533

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810372669.1A Active CN108647061B (zh) 2018-04-24 2018-04-24 系统隐藏方法的调用方法、装置和计算设备

Country Status (1)

Country Link
CN (1) CN108647061B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109901937A (zh) * 2019-01-18 2019-06-18 平安普惠企业管理有限公司 隐藏api的反射调用方法、装置、计算机设备及存储介质
CN110502288A (zh) * 2019-08-19 2019-11-26 Oppo广东移动通信有限公司 用于第三方应用的调用方法、装置、电子设备和存储介质
CN110673834A (zh) * 2019-09-23 2020-01-10 北京博睿宏远数据科技股份有限公司 一种源码调用方法、装置、计算机设备及存储介质
CN111027055A (zh) * 2019-03-19 2020-04-17 哈尔滨安天科技集团股份有限公司 一种隐藏安卓系统进程的方法、装置及存储设备
CN114741131A (zh) * 2022-04-02 2022-07-12 深圳软牛科技有限公司 动态库导出符号的隐藏方法、装置、设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102262555A (zh) * 2011-08-22 2011-11-30 迈普通信技术股份有限公司 加载java三方库的不同版本的方法和装置
CN102360412A (zh) * 2011-09-26 2012-02-22 飞天诚信科技股份有限公司 Java源代码的保护方法和系统
CN102929597A (zh) * 2012-09-24 2013-02-13 摩卡软件(天津)有限公司 一种基于Java平台的Web业务支持方法和装置
CN103970563A (zh) * 2014-04-15 2014-08-06 四川长虹电器股份有限公司 动态加载安卓类的方法
CN107577960A (zh) * 2017-11-01 2018-01-12 郑州云海信息技术有限公司 一种linux系统中文件隐藏系统及方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102262555A (zh) * 2011-08-22 2011-11-30 迈普通信技术股份有限公司 加载java三方库的不同版本的方法和装置
CN102360412A (zh) * 2011-09-26 2012-02-22 飞天诚信科技股份有限公司 Java源代码的保护方法和系统
CN102929597A (zh) * 2012-09-24 2013-02-13 摩卡软件(天津)有限公司 一种基于Java平台的Web业务支持方法和装置
CN103970563A (zh) * 2014-04-15 2014-08-06 四川长虹电器股份有限公司 动态加载安卓类的方法
CN107577960A (zh) * 2017-11-01 2018-01-12 郑州云海信息技术有限公司 一种linux系统中文件隐藏系统及方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
PHIL MCGACHEY等: "Class Transformations for Transparent Distribution of Java Applications", 《JOURNAL OF OBJECT TECHNOLOGY》 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109901937A (zh) * 2019-01-18 2019-06-18 平安普惠企业管理有限公司 隐藏api的反射调用方法、装置、计算机设备及存储介质
CN111027055A (zh) * 2019-03-19 2020-04-17 哈尔滨安天科技集团股份有限公司 一种隐藏安卓系统进程的方法、装置及存储设备
CN110502288A (zh) * 2019-08-19 2019-11-26 Oppo广东移动通信有限公司 用于第三方应用的调用方法、装置、电子设备和存储介质
CN110673834A (zh) * 2019-09-23 2020-01-10 北京博睿宏远数据科技股份有限公司 一种源码调用方法、装置、计算机设备及存储介质
CN114741131A (zh) * 2022-04-02 2022-07-12 深圳软牛科技有限公司 动态库导出符号的隐藏方法、装置、设备及存储介质
CN114741131B (zh) * 2022-04-02 2023-08-15 深圳软牛科技有限公司 动态库导出符号的隐藏方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN108647061B (zh) 2021-11-23

Similar Documents

Publication Publication Date Title
CN108647061A (zh) 系统隐藏方法的调用方法、装置和计算设备
CN105068932B (zh) 一种Android应用程序加壳的检测方法
Bell et al. Phosphor: Illuminating dynamic data flow in commodity jvms
CN102207903B (zh) 基于自动重定向调用的单元测试方法及系统
KR102059705B1 (ko) 적응식 이식가능 라이브러리
EP3035191B1 (en) Identifying source code used to build executable files
US7743423B2 (en) Security requirement determination
CN103443768B (zh) 用于调用转换和追踪的规范文件
US10019598B2 (en) Dynamic service discovery
JPH11327916A (ja) コンパイル済コ―ドにおけるダイナミッククラス初期化チェックのコスト低減技術
US20080172658A1 (en) Mechanism for enabling a set of code intended for a first platform to be executed on a second platform
Wang et al. WANA: Symbolic execution of wasm bytecode for cross-platform smart contract vulnerability detection
US20100050174A1 (en) Heap organization for a multitasking virtual machine
CN106055481B (zh) 计算机程序的测试方法及装置
CN105678160B (zh) 用于提供对引导驱动程序的原始例程的访问的系统和方法
US20080222607A1 (en) Extending Portability of Java Code Through the Use of AOP
US9245112B2 (en) Apparatus and method for managing entitlements to program code
CN110941456A (zh) 按需加载动态脚本语言代码以减少内存使用
US20150067686A1 (en) Auto-Cloudifying Applications Via Runtime Modifications
US8813258B2 (en) Selectively exposing base class libraries based on application execution context
US20080172656A1 (en) Processing engine for enabling a set of code intended for a first platform to be executed on a second platform
CN112698924A (zh) 一种临床试验电子数据采集系统及其运行方法
CN108572853A (zh) 系统隐藏方法的接口提供方法、装置和计算设备
US7861250B2 (en) Runtime polymorphism
US8843888B2 (en) Characterizing artificiality in object code

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