CN111143789A - 一种apk资源文件的混淆方法和装置 - Google Patents

一种apk资源文件的混淆方法和装置 Download PDF

Info

Publication number
CN111143789A
CN111143789A CN201911237291.5A CN201911237291A CN111143789A CN 111143789 A CN111143789 A CN 111143789A CN 201911237291 A CN201911237291 A CN 201911237291A CN 111143789 A CN111143789 A CN 111143789A
Authority
CN
China
Prior art keywords
resource
file
apk
arsc
data table
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
CN201911237291.5A
Other languages
English (en)
Other versions
CN111143789B (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.)
Surfilter Network Technology Co ltd
Shenzhen Surfilter Technology Development Co ltd
Original Assignee
Surfilter Network Technology Co ltd
Shenzhen Surfilter Technology Development 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 Surfilter Network Technology Co ltd, Shenzhen Surfilter Technology Development Co ltd filed Critical Surfilter Network Technology Co ltd
Priority to CN201911237291.5A priority Critical patent/CN111143789B/zh
Publication of CN111143789A publication Critical patent/CN111143789A/zh
Application granted granted Critical
Publication of CN111143789B publication Critical patent/CN111143789B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)

Abstract

本发明公开了一种APK资源文件混淆方法及装置,包括下述步骤:通过常规资源文件混淆方法,生成未签名的APK资源文件;提取未签名的APK资源文件中的资源索引文件resources.arsc;对资源索引文件resources.arsc进行重编译,修改资源ID列表,生成新的资源索引文件resources.arsc;用新的资源索引文件resources.arsc替换原有的资源索引文件resources.arsc,并对APK资源文件进行重签名。本发明通过将APK资源文件中所有资源文件ID和资源文件名都改为相同的字段,避免了资源文件容易被人盗用的问题,杜绝了黑客利用资源ID进行破解分析和自动化控制,因此更进一步加强防护措施,使得应用不易被反编译人员分析利用。

Description

一种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使用过的字符串全部删除,并在资源数据表的资源名称字符串池中增加一个(name remove)字段,并将该字段赋值给所有资源文件ID的值,生成新的资源数据表,并利用APKtool将修改过后的资源数据表反编译到资源索引文件中,生成新的资源索引文件。
在实施例1中,所述APK资源文件进行重签名后经过APKtool反编译的结果如图5所示,其中资源索引文件中的资源文件ID以及资源文件名全部变为了name remove,因此反编译人员无法通过资源文件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;
其中,所述数据解析子模块生成的资源数据表至少包括:资源名称字符串池;
其中,赋值子模块所只增加一个指定字段name remove;
综上所述,本发明提供了一种APK资源文件混淆方法及装置,通过将APK资源文件的ID进行重新赋值,消除了常规混淆方法中APK资源文件ID唯一性的问题,避免了反编译人员通过利用资源ID进行破解分析和自动化控制,更进一步加强软件源文件的防护措施
需要说明的是,本发明的说明书及其附图中给出了本发明的较佳的实施例,但是,本发明可以通过许多不同的形式来实现,并不限于本说明书所描述的实施例,这些实施例不作为对本发明内容的额外限制,提供这些实施例的目的是使对本发明的公开内容的理解更加透彻全面。并且,上述各技术特征继续相互组合,形成未在上面列举的各种实施例,均视为本发明说明书记载的范围;进一步地,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。

Claims (10)

1.一种APK资源文件混淆方法,其特征在于,所述方法包括以下步骤:
S1、通过常规资源文件混淆方法,生成未签名的APK资源文件;
S2、提取未签名的APK资源文件中的资源索引文件resources.arsc;
S3、对资源索引文件resources.arsc进行重编译,修改资源ID列表,生成新的资源索引文件resources.arsc;
S4、用新的资源索引文件resources.arsc替换原有的资源索引文件resources.arsc,并对APK资源文件进行重签名。
2.根据权利要求1所述的一种APK资源文件混淆方法,其特征在于,所述步骤S1中包括以下步骤:
S11、将所有的资源文件ID用简短无意义的字母组合替换。
3.根据权利要求2所述的一种APK资源文件混淆方法,其特征在于,所述步骤S3中包括以下步骤:
S31、将资源索引文件resources.arsc按照一定格式进行数据解析,解析得到的资源数据表;
S32、对所述资源数据表进行修改,剔除所有资源ID使用过的字符串;
S33、在所述资源数据表中增加一个指定的字段,并将该指定字段赋予给所有资源ID的值,获得新的资源数据表;
S34、将所述新的资源数据表中的数据回编到所述资源索引文件resources.arsc中,得到新的资源索引文件resources.arsc。
4.根据权利要求3所述的一种APK资源文件混淆方法,其特征在于,所述资源数据表中,至少包括以下数据:资源名称字符串池。
5.根据权利要求4所述的一种APK资源文件混淆方法,其特征在于,所述步骤S3中,资源数据表中只增加一个指定字段。
6.一种APK资源文件混淆装置,其特征在于,该装置包括:
常规混淆模块,用于通过常规混淆的方式,生成未签名的APK资源文件;
提取模块,用于提取未签名APK资源文件的资源索引文件resources.arsc;
重编译修改模块,用于修改所述资源索引文件中资源文件ID并重编译生成新的资源索引文件;
替换模块,用于将新的资源索引文件替换原来的资源索引文件,并对APK资源文件进行重签名。
7.根据权利要求6所述的一种APK资源文件混淆装置,其特征在于,所述常规混淆模块包括将所有的资源文件ID用简短无意义的字母组合替换的替换子模块。
8.根据权利要求7所述的一种APK资源文件混淆装置,其特征在于,所述重编译修改模块还包括:
数据解析子模块31,用于将资源索引文件resources.arsc按照一定格式进行解析,生成资源数据表;
数据修改子模块32,用于在资源数据表中剔除所有资源ID使用过的字符串;
赋值子模块33,用于将新增加的指定字段赋值给资源文件ID,以获取新的资源数据表;
回编子模块34,用于将所述新的资源数据表中的数据回编到所述资源索引文件resources.arsc中,得到新的资源索引文件resources.arsc。
9.根据权利要求8所述的一种APK资源文件混淆装置,其特征在于,所述数据解析子模块生成的资源数据表至少包括:资源名称字符串池。
10.根据权利要求6所述的一种APK资源文件混淆装置,其特征在于,所述赋值子模块所只增加一个指定字段。
CN201911237291.5A 2019-12-05 2019-12-05 一种apk资源文件的混淆方法和装置 Active CN111143789B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911237291.5A CN111143789B (zh) 2019-12-05 2019-12-05 一种apk资源文件的混淆方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911237291.5A CN111143789B (zh) 2019-12-05 2019-12-05 一种apk资源文件的混淆方法和装置

Publications (2)

Publication Number Publication Date
CN111143789A true CN111143789A (zh) 2020-05-12
CN111143789B CN111143789B (zh) 2023-07-25

Family

ID=70517784

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911237291.5A Active CN111143789B (zh) 2019-12-05 2019-12-05 一种apk资源文件的混淆方法和装置

Country Status (1)

Country Link
CN (1) CN111143789B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113094664A (zh) * 2021-04-09 2021-07-09 每日互动股份有限公司 一种防止安卓应用程序被反编译的系统
CN114416108A (zh) * 2022-03-30 2022-04-29 北京全路通信信号研究设计院集团有限公司 基于Android资源文件索引表对抗反编译的方法、系统及装置
CN116662942A (zh) * 2023-07-31 2023-08-29 成都初心互动科技有限公司 一种iOS应用程序加固方法及系统

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105786498A (zh) * 2016-02-25 2016-07-20 广州阿里巴巴文学信息技术有限公司 用于修改应用程序的方法、设备和电子设备
US20160371473A1 (en) * 2015-01-08 2016-12-22 Soongsil University Research Consortium Techno-Park Code Obfuscation Device Using Indistinguishable Identifier Conversion And Method Thereof
CN106295255A (zh) * 2015-05-27 2017-01-04 腾讯科技(深圳)有限公司 应用程序的加固方法和装置
CN106778099A (zh) * 2016-11-29 2017-05-31 北京奇虎科技有限公司 防篡改apk的生成方法和装置、安装及运行方法和装置
CN108089880A (zh) * 2017-12-28 2018-05-29 北京奇虎科技有限公司 对应用程序安装文件进行预处理的方法、装置和服务器
CN109144948A (zh) * 2017-06-15 2019-01-04 海马云(天津)信息技术有限公司 应用文件定位的方法、装置、电子设备和存储器
CN109657488A (zh) * 2019-02-26 2019-04-19 北京智游网安科技有限公司 一种资源文件加密处理方法、智能终端及存储介质
CN109858203A (zh) * 2018-12-21 2019-06-07 厦门市美亚柏科信息股份有限公司 一种Android平台应用的安全防护方法、装置及存储介质

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160371473A1 (en) * 2015-01-08 2016-12-22 Soongsil University Research Consortium Techno-Park Code Obfuscation Device Using Indistinguishable Identifier Conversion And Method Thereof
CN106295255A (zh) * 2015-05-27 2017-01-04 腾讯科技(深圳)有限公司 应用程序的加固方法和装置
CN105786498A (zh) * 2016-02-25 2016-07-20 广州阿里巴巴文学信息技术有限公司 用于修改应用程序的方法、设备和电子设备
CN106778099A (zh) * 2016-11-29 2017-05-31 北京奇虎科技有限公司 防篡改apk的生成方法和装置、安装及运行方法和装置
CN109144948A (zh) * 2017-06-15 2019-01-04 海马云(天津)信息技术有限公司 应用文件定位的方法、装置、电子设备和存储器
CN108089880A (zh) * 2017-12-28 2018-05-29 北京奇虎科技有限公司 对应用程序安装文件进行预处理的方法、装置和服务器
CN109858203A (zh) * 2018-12-21 2019-06-07 厦门市美亚柏科信息股份有限公司 一种Android平台应用的安全防护方法、装置及存储介质
CN109657488A (zh) * 2019-02-26 2019-04-19 北京智游网安科技有限公司 一种资源文件加密处理方法、智能终端及存储介质

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113094664A (zh) * 2021-04-09 2021-07-09 每日互动股份有限公司 一种防止安卓应用程序被反编译的系统
CN114416108A (zh) * 2022-03-30 2022-04-29 北京全路通信信号研究设计院集团有限公司 基于Android资源文件索引表对抗反编译的方法、系统及装置
CN114416108B (zh) * 2022-03-30 2022-08-09 北京全路通信信号研究设计院集团有限公司 基于Android资源文件索引表对抗反编译的方法、系统及装置
CN116662942A (zh) * 2023-07-31 2023-08-29 成都初心互动科技有限公司 一种iOS应用程序加固方法及系统

Also Published As

Publication number Publication date
CN111143789B (zh) 2023-07-25

Similar Documents

Publication Publication Date Title
CN111143789A (zh) 一种apk资源文件的混淆方法和装置
CN104680039B (zh) 一种应用程序安装包的数据保护方法及装置
CN105787366B (zh) 基于组件关系的安卓软件可视化安全分析方法
KR101521765B1 (ko) 분간이 난해한 식별자 변환을 이용한 코드 난독화 장치 및 방법
US20090313613A1 (en) Methods and Apparatus for Automatic Translation of a Computer Program Language Code
CN104102880B (zh) 一种检测Android权限提升攻击的应用程序重写方法和系统
EP2897074A1 (en) Application code obfuscation device based on self-conversion and method therefor
US8762963B2 (en) Translation of programming code
CN104834858A (zh) 一种android应用中恶意代码的静态检测方法
CN106970820A (zh) 代码存储方法及代码存储装置
CN104750472B (zh) 一种终端应用的资源包管理方法和装置
CN110781462B (zh) 一种资源的混淆方法和装置
CN105022936A (zh) 一种类class文件加密解密方法和装置
CN109740315A (zh) 基于安卓平台的常量保护方法、装置、设备及存储介质
CN109214161A (zh) 一种二维码安全标签登录系统
CN111831316A (zh) 一种软件开发包更新方法及装置
CN112115427A (zh) 代码混淆方法、装置、电子设备及存储介质
CN109857398A (zh) 一种前端页面的生成方法、装置、存储介质及计算机设备
CN104572102A (zh) Java中的中文乱码解决方法
CN114036561A (zh) 信息隐藏、信息获取方法、装置、存储介质及电子设备
CN108153745B (zh) 一种应用数据调用方法及应用开发系统
CN110457872B (zh) 一种Android App应用资源的隐藏加固方法
CN102737203B (zh) 一种基于程序父子基因关系的病毒防御方法及系统
Shanshan et al. Android's sensitive data leakage detection based on API monitoring
CN114090965B (zh) java代码混淆方法、系统、计算机设备及存储介质

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