获取混淆资源的方法、智能终端及计算机可读存储介质技术

技术编号:34470723 阅读:25 留言:0更新日期:2022-08-10 08:44
本申请公开了一种获取混淆资源的方法、智能终端以及计算机可读存储介质,其中,该获取混淆资源的方法应用于资源安装包,资源安装包的上下文类中设置有自定义的子类上下文,子类上下文中设置有一资源管理类的自定义子类资源管理文件,该方法包括:在基于上下文类启动getIdentifier方法之前,将子类上下文传入上下文类的第一类对象和第二类对象中,以重写getIdentifier方法;基于重写的getIdentifier方法,获取混淆资源的标识信息;基于标识信息,获取混淆资源。通过上述方式,利用在子类上下文中设置子类资源管理文件,以将getIdentifier方法重写,能够在资源都被混淆的情况下,通过重写的getIdentifier方法来获取到混淆后对应的资源,从而优化获取混淆资源的流程以及减少资源管理成本。的流程以及减少资源管理成本。的流程以及减少资源管理成本。

【技术实现步骤摘要】
获取混淆资源的方法、智能终端及计算机可读存储介质


[0001]本申请涉及客户端开发
,特别是一种获取混淆资源的方法、智能终端以及计算机可读存储介质。

技术介绍

[0002]在Android开发中,出于安全以及减小安装包大小的考虑,大多数的Android应用都会对资源名称进行混淆。但是应用开发中避免不了需要通过资源的原始名称来获取资源的场景(如,资源名称不是已知,而是通过网络下发的)。当下的普遍做法都是将这些需要通过原始名称来获取的资源,统一加入白名单中,在白名单中的资源将不会被混淆,还是保持原来的名称。
[0003]目前的通过白名单获取资源的方法存在着一部分资源不会被混淆,若白名单中的资源过多,则通过资源混淆来保护资源的意义将减弱。以及白名单需要长期性的人工维护,其容易出现错漏,并且引发一些未知的问题。

技术实现思路

[0004]为解决上述问题,本申请提供了一种获取混淆资源的方法、智能终端以及计算机可读存储介质,能够优化获取混淆资源的流程以及减少资源管理成本。
[0005]本申请采用的一个技术方案是:提供一种获取混淆资源的方法,该方法应用于资源安装包,其中,资源安装包的上下文类中设置有自定义的子类上下文,子类上下文中设置有一资源管理类的自定义子类资源管理文件;该方法包括:在基于上下文类启动getIdentifier方法之前,将子类上下文传入上下文类的第一类对象和第二类对象中,以重写getIdentifier方法;基于重写的getIdentifier方法,获取混淆资源的标识信息;基于标识信息,获取混淆资源。
[0006]其中,基于重写的getIdentifier方法,获取混淆资源的标识信息,包括:调用子类上下文中的getResource方法,以返回子类资源管理文件;重载子类资源管理文件中的getIdentifier方法;基于重载的getIdentifier方法,获取标识信息。
[0007]其中,标识信息为混淆资源的ID名称;基于重写的getIdentifier方法,获取混淆资源的标识信息,包括:将混淆资源的原始变量名、资源类型和应用包名传入getIdentifier方法中,以重载getIdentifier方法;基于重载的getIdentifier方法,利用原始变量名、资源类型和应用包名,反射调用R.java类文件,以进行资源ID索引;基于资源ID索引的结果,获取ID名称。
[0008]其中,利用原始变量名、资源类型和应用包名,反射调用R.java类文件,以进行资源ID索引,包括:利用原始变量名、资源类型和应用包名,反射调用R.java文件中的映射关系表;基于映射关系表,对原始变量名对应的资源ID进行索引。
[0009]其中,第一类对象为Application对象,第二类对象为Activity对象;在基于上下文类启动getIdentifier方法之前,将子类上下文传入上下文类的第一类对象和第二类对
象中,以重写getIdentifier方法,包括:在基于上下文类启动getIdentifier方法之前,创建Application对象和Activity对象;在基于Application对象和Activity对象初始化时,调用attachBaseContext方法以将子类上下文传入Application对象和Activity对象中,以重写getIdentifier方法。
[0010]其中,基于标识信息,获取混淆资源,包括:基于所述标识信息,在资源管理类中索引混淆资源的路径,以得到混淆资源。
[0011]其中,在资源管理类中索引混淆资源的路径,包括:在资源管理类的字符串类文件、布局类文件或者图像类文件中的至少一个中索引混淆资源的路径。
[0012]其中,在该方法之前,还包括:获取资源安装包;对资源安装包内的原始资源进行编译,以生成标识信息与混淆资源的原始变量名的映射关系表;将映射关系表储存在R.java类文件中;混淆原始资源,以形成混淆资源。
[0013]本申请采用的另一个技术方案是:提供一种智能终端,该智能终端包括处理器以及与处理器连接的存储器;其中,存储器中存储有程序数据,处理器调取存储器存储的程序数据,以执行如上所述的获取混淆资源的方法。
[0014]本申请采用的另一个技术方案是:提供一种计算机可读存储介质,该计算机可读存储介质中存储有程序数据,程序数据在被处理器执行时,用以实现如上所述的获取混淆资源的方法。
[0015]本申请提供的获取混淆资源的方法应用于资源安装包,其中,资源安装包的上下文类中设置有自定义的子类上下文,子类上下文中设置有一资源管理类的自定义子类资源管理文件,该方法包括:在基于上下文类启动getIdentifier方法之前,将子类上下文传入上下文类的第一类对象和第二类对象中,以重写getIdentifier方法;基于重写的getIdentifier方法,获取混淆资源的标识信息;基于标识信息,获取混淆资源。通过上述方式,利用在自定义的子类上下文中设置自定义的子类资源管理文件,以将getIdentifier方法重写,能够在保障所有资源都被混淆的情况下,通过重写的getIdentifier方法来获取到混淆后对应的资源,从而优化获取混淆资源的流程以及减少资源管理成本。
附图说明
[0016]为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。其中:
[0017]图1是本申请中文件配置一实施例的示意图;
[0018]图2是本申请提供的获取混淆资源的方法第一实施例的流程示意图;
[0019]图3是本申请中步骤11一实施例的流程示意图;
[0020]图4是本申请中建立混淆资源的标识信息与原始变量名的映射关系一实施例的流程示意图;
[0021]图5是本申请中步骤12一实施例的流程示意图;
[0022]图6是本申请中获取标识信息一实施例的流程示意图;
[0023]图7是本申请中进行资源ID索引一实施例的流程示意图;
[0024]图8是本申请提供的获取混淆资源的方法第二实施例的流程示意图;
[0025]图9为本申请提供的一种智能终端的结构示意图;
[0026]图10为本申请提供的计算机可读存储介质一实施例的结构示意图。
具体实施方式
[0027]下面结合说明书附图,对本公开实施例的方案进行详细说明。
[0028]以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、流程、技术之类的具体细节,以便透彻理解本申请。
[0029]结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述。可以理解的是,此处所描述的具体实施例仅用于解释本公开,而非对本公开的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种获取混淆资源的方法,所述方法应用于资源安装包,其特征在于,所述资源安装包的上下文类中设置有自定义的子类上下文,所述子类上下文中设置有一资源管理类的自定义子类资源管理文件,所述方法包括:在基于所述上下文类启动getIdentifier方法之前,将所述子类上下文传入所述上下文类的第一类对象和第二类对象中,以重写所述getIdentifier方法;基于重写的所述getIdentifier方法,获取混淆资源的标识信息;基于所述标识信息,获取混淆资源。2.根据权利要求1所述的方法,其特征在于,所述基于重写的所述getIdentifier方法,获取混淆资源的标识信息,包括:调用所述子类上下文中的getResource方法,以返回所述子类资源管理文件;重载所述子类资源管理文件中的getIdentifier方法;基于重载的所述getIdentifier方法,获取所述标识信息。3.根据权利要求2所述的方法,其特征在于,所述标识信息为所述混淆资源的ID名称;所述基于重写的所述getIdentifier方法,获取混淆资源的标识信息,包括:将所述混淆资源的原始变量名、资源类型和应用包名传入所述getIdentifier方法中,以重载所述getIdentifier方法;基于重载的所述getIdentifier方法,利用所述原始变量名、资源类型和应用包名,反射调用R.java类文件,以进行资源ID索引;基于所述资源ID索引的结果,获取所述ID名称。4.根据权利要求3所述的方法,其特征在于,所述利用所述原始变量名、资源类型和应用包名,反射调用R.java类文件,以进行资源ID索引,包括:利用所述原始变量名、资源类型和应用包名,反射调用所述R.java文件中的映射关系表;基于所述映射关系表,对所述原始变量名对应的所述资源ID进行索引。5.根据权利要求1所述的方法,其特征在于,所述第一类对象为Application对象...

【专利技术属性】
技术研发人员:胡晓岽
申请(专利权)人:杭州涂鸦信息技术有限公司
类型:发明
国别省市:

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

1