一种APK资源文件的混淆方法和装置与流程

文档序号:20702392发布日期:2020-05-12 15:54阅读:593来源:国知局
一种APK资源文件的混淆方法和装置与流程

技术领域:

本发明属于安卓应用安全技术领域,具体涉及一种apk资源文件的混淆方法和装置。



背景技术:

随着智能手机的大规模普及,移动应用开发也得到了飞速发展,而安卓平台更是以其优良的性能表现赢得了众多开发者和用户的青睐。形形色色的安卓应用出现在应用市场,极大地丰富了人们的日常生活。但是,由于安卓应用易被破解重打包的特性,不法分子可以通过apk资源文件轻易破解安卓应用,获取安卓应用的重要信息。

当前,常用的安卓应用资源文件混淆方法主要是基于传统的代码混淆技术。将资源文件名用简单的无意义的字符进行替代,给反编译者带来理解上的困难,同时也能减小apk文件的大小。而随着破解技术的不断完善,原有的代码混淆技术受到了巨大的挑战。即使资源文件名被混淆,但是资源文件id仍是唯一的,反编译者只要愿意多花时间,总能明白资源文件所代表的意义,因此,如何从资源文件id上对apk资源文件进行混淆是目前本领域探索的方向。



技术实现要素:

为了解决上述问题,本发明提供了一种apk资源文件混淆方法,使得反编译人员无法通过资源文件id分析并破解apk资源文件,以提高apk资源文件的加密性,

本发明所述方法包括以下步骤:

s1、通过常规资源文件混淆方法,生成未签名的apk资源文件;

s2、提取未签名的apk资源文件中的资源索引文件resources.arsc;

s3、对资源索引文件resources.arsc进行重编译,修改资源id列表,生成新的资源索引文件resources.arsc;

s4、用新的资源索引文件resources.arsc替换原有的资源索引文件resources.arsc,并对apk资源文件进行重签名。

进一步的,所述步骤s1包括以下步骤:

s11、将所有的资源文件id用简短无意义的字母组合替换;

进一步的,所述步骤s3中还包括以下步骤:

s31、将资源索引文件resources.arsc按照一定格式进行数据解析,解析得到的资源数据表;

s32、对所述资源数据表进行修改,剔除所有资源id使用过的字符串;

s33、在所述资源数据表中增加一个指定的字段,并将该指定字段赋予给所有资源id的值,获得新的资源数据表;

s34、将所述新的资源数据表中的数据回编到所述资源索引文件resources.arsc中,得到新的资源索引文件resources.arsc;

进一步的,所述资源数据表应该至少包括以下数据:资源名称字符串池;

进一步的,所述资源数据表中只增加一个指定字段;

本发明的另一方面,还包括一种apk资源文件的混淆装置,该装置包括:

常规混淆模块,用于通过常规混淆的方式,生成未签名的apk资源文件;

提取模块,用于提取未签名apk资源文件的资源索引文件resources.arsc;

重编译修改模块,用于修改所述资源索引文件中资源文件id并重编译生成新的资源索引文件;

替换模块,用于将新的资源索引文件替换原来的资源索引文件,并对apk资源文件进行重签名。

进一步的,所述常规混淆模块包括将所有的资源文件id用简短无意义的字母组合替换的替换子模块;

进一步的,所述重编译修改模块还包括:

数据解析子模块31,用于将资源索引文件resources.arsc按照一定格式进行解析,生成资源数据表;

数据修改子模块32,用于在资源数据表中剔除所有资源id使用过的字符串;

赋值子模块33,用于将新增加的指定字段赋值给资源文件id,以获取新的资源数据表;

回编子模块34,用于将所述新的资源数据表中的数据回编到所述资源索引文件resources.arsc中,得到新的资源索引文件resources.arsc;

进一步的,所述数据解析子模块生成的资源数据表至少包括:资源名称字符串池;

进一步的,赋值子模块所只增加一个指定字段;

本发明的有益之处在于,通过将apk资源文件中所有资源文件id和资源文件名都改为相同的字段,避免了资源文件容易被人盗用的问题,杜绝了黑客利用资源id进行破解分析和自动化控制,因此更进一步加强防护措施,使得应用不易被反编译人员分析利用。

说明书附图

图1为本发明一种apk资源文件混淆方法的流程示意图;

图2为常规资源文件混淆方法的示意图;

图3为本发明步骤s3所述对于资源索引文件进行重编译的流程示意图;

图4为本发明实施例中获取的资源数据表的结构示意图;

图5为本发明实施例中经过本发明所述方法混淆的apk资源文件示意图;

图6位本发明一种apk资源文件混淆设备的结构示意图;

具体实施方式

下面结合实施例和附图,对本发明的技术方案作进一步陈述。

实施例一

如图1所示,为本发明所述的一种apk资源文件混淆方法,该方法包括以下步骤:

s1、通过常规资源文件混淆方法,生成未签名的apk资源文件;

s2、提取未签名的apk资源文件中的资源索引文件resources.arsc;

s3、对资源索引文件resources.arsc进行重编译,修改资源id列表,生成新的资源索引文件resources.arsc;

s4、用新的资源索引文件resources.arsc替换原有的资源索引文件resources.arsc,并对apk资源文件进行重签名。

一般来说,常规资源文件混淆方法是将资源文件名称用简短无意义的进行替换,如图2所示,将原来的文件名称进行变化,因此会给反编译者制造理解上的困难,反编译者需要消耗一定的时间来搞清楚这些资源文件的作用,并且可以给apk瘦身。混淆后资源名长度更短,资源文件减小,最终能明显减小apk的大小。

但即使被混淆,由于资源文件名称唯一,反编译者依然可以通过花费一定时间来弄清楚相应资源文件的作用,因此,将apk资源文件的索引文件resources.arsc提取出来作进一步处理。

如图3所示,对于步骤s3,还包括以下步骤:

s31、将资源索引文件resources.arsc按照一定格式进行数据解析,解析得到的资源数据表;

s32、对所述资源数据表进行修改,剔除所有资源id使用过的字符串;

s33、在所述资源数据表中增加一个指定的字段,并将该指定字段赋予给所有资源id的值,获得新的资源数据表;

s34、将所述新的资源数据表中的数据回编到所述资源索引文件resources.arsc中,得到新的资源索引文件resources.arsc;

将图2中得到的资源索引文件按步骤3所述方法进行编译,数据解析格式如图4所示,将所述资源索引文件resources.arsc制成资源数据表,所述资源数据表包括:全局字符串池、报表包头、资源类型字符串池、资源名称字符串池、规格类型、配置列表;

进一步的,利用apktool修改资源数据表中的资源类型字符串池和资源名称字符串池,将所有资源文件id使用过的字符串全部删除,并在资源数据表的资源名称字符串池中增加一个(nameremove)字段,并将该字段赋值给所有资源文件id的值,生成新的资源数据表,并利用apktool将修改过后的资源数据表反编译到资源索引文件中,生成新的资源索引文件。

在实施例1中,所述apk资源文件进行重签名后经过apktool反编译的结果如图5所示,其中资源索引文件中的资源文件id以及资源文件名全部变为了nameremove,因此反编译人员无法通过资源文件id的唯一性来推测资源文件的作用,使得资源文件id失去了分析和利用的价值,apk文件更难以被破解。

实施例2

如图6所示,为本发明所述的一种apk资源文件混淆装置的结构示意图,该装置包括:

常规混淆模块1,用于通过常规混淆的方式,生成未签名的apk资源文件;

提取模块2,用于提取未签名apk资源文件的资源索引文件resources.arsc;

重编译修改模块3,用于修改所述资源索引文件中资源文件id并重编译生成新的资源索引文件;

替换模块4,用于将新的资源索引文件替换原来的资源索引文件,并对apk资源文件进行重签名,

得到的apk资源文件中所有资源文件id都经过修改丧失了唯一性,因此不易被反编译人员分析利用。

其中,所述重编译修改模块包括:

数据解析子模块31,用于将资源索引文件resources.arsc按照一定格式进行解析,生成资源数据表;

数据修改子模块32,用于在资源数据表中剔除所有资源id使用过的字符串;

赋值子模块33,用于将新增加的指定字段赋值给资源文件id,以获取新的资源数据表;

回编子模块34,用于将所述新的资源数据表中的数据回编到所述资源索引文件resources.arsc中,得到新的资源索引文件resources.arsc;

其中,所述数据解析子模块生成的资源数据表至少包括:资源名称字符串池;

其中,赋值子模块所只增加一个指定字段nameremove;

综上所述,本发明提供了一种apk资源文件混淆方法及装置,通过将apk资源文件的id进行重新赋值,消除了常规混淆方法中apk资源文件id唯一性的问题,避免了反编译人员通过利用资源id进行破解分析和自动化控制,更进一步加强软件源文件的防护措施

需要说明的是,本发明的说明书及其附图中给出了本发明的较佳的实施例,但是,本发明可以通过许多不同的形式来实现,并不限于本说明书所描述的实施例,这些实施例不作为对本发明内容的额外限制,提供这些实施例的目的是使对本发明的公开内容的理解更加透彻全面。并且,上述各技术特征继续相互组合,形成未在上面列举的各种实施例,均视为本发明说明书记载的范围;进一步地,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1