CN106295263A - 一种实现应用加固的方法及装置 - Google Patents

一种实现应用加固的方法及装置 Download PDF

Info

Publication number
CN106295263A
CN106295263A CN201510268570.3A CN201510268570A CN106295263A CN 106295263 A CN106295263 A CN 106295263A CN 201510268570 A CN201510268570 A CN 201510268570A CN 106295263 A CN106295263 A CN 106295263A
Authority
CN
China
Prior art keywords
installation package
part data
package file
file
data
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.)
Withdrawn
Application number
CN201510268570.3A
Other languages
English (en)
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.)
ZTE Corp
Original Assignee
ZTE Corp
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 ZTE Corp filed Critical ZTE Corp
Priority to CN201510268570.3A priority Critical patent/CN106295263A/zh
Priority to PCT/CN2016/071604 priority patent/WO2016188134A1/zh
Publication of CN106295263A publication Critical patent/CN106295263A/zh
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2107File encryption

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Storage Device Security (AREA)

Abstract

本发明公开了一种实现应用加固的方法及装置,包括:对经压缩包破坏处理的第一安装包文件进行加壳,生成第二安装包文件,以对应用进行加固。本发明方法对经压缩包破坏处理的第一安装包文件进行加壳,避免了压缩包破坏的第一安装包文件被压缩文件修复工具修复导致加固保护消失;通过对压缩包破坏的第一安装包文件进行加壳,避免了在执行完壳代码跳转到安装包的原始入口后,被保护安装包的数据都暴露在内存中,实现了应用的加固,提高了安装包文件的安全性。进一步地,通过从第二安装包文件中提取出部分数据并对提取出的部分数据进行加密,放置于第二安装包文件的尾部的处理,加大了安装包文件的保护力度,进一步提高了安装包文件的安全性。

Description

一种实现应用加固的方法及装置
技术领域
本发明涉及应用安全领域,尤指一种实现应用加固的方法及装置。
背景技术
随着智能终端的发展,终端应用的数量得到快速的膨胀,用户通过终端应用进行越来越多的日常事务处理,终端应用安全成为开发者和用户都关注的技术问题。为了提高终端应用的安全,技术人员对终端应用进行处理,其中,包含对安装包的加固。以安卓(Android)平台为例,安卓系统是移动终端普及最广的操作系统之一,Android平台以开放性吸引众多开发者、以免费性赢得大量的用户。越来越多的Android应用被人们用来处理如收发邮件、电子支付、社交通信等日常事务。Android应用在使用过程中不可避免的需要访问存储用户的账号、密码等数据,因而成为恶意软件的攻击对象。随着Android应用范围的增大,威胁范围越来越广,威胁程度也在加深。为了提高Android应用的安全性,开发人员对Android安装包(APK)进行了加固处理,通过加固处理,可以提高Android应用的安全,常用的加固方法有:伪加密、压缩包破坏、代码混淆、签名验证等。
伪加密是通过java代码对APK压缩文件进行伪加密。压缩包破坏通过在标志尾添加其他数据,由于Android系统对APK的识别是将APK当作压缩文件,从标志头到标志尾的逻辑进行识别的,如果在标志尾添加其他数据,则APK会被判断为被破坏,在对压缩包破坏的APK进行解压、查看或用反编译处理时,均会提示文件已损坏,压缩包破坏与伪加密类似,但标志尾添加其他数据的APK不会影响其在Android系统的正常运行和安装。代码混淆主要是干扰逆向工作人员的分析,加大破解者对软件的分析难度,达到混淆视听的效果,经过混淆后的代码在反汇编或者反编译后,会出现程序间交叉引用异常复杂,从而达到加固APK的目的。签名验证通过与APK绑定,实现APK的加固。
上述加固方法,由于在Android4.2之后推出的系统,修改了签名验证的方式导致无法安装伪加密的APK;通过采用压缩文件修复工具,会将APK压缩包破坏方法添加到标志尾的其他数据进行修复,使APK加固保护消失。经过混淆后的代码在反汇编或者反编译后,有可能与反射发生冲突,且代码混淆方法只是增大破解难度,并不能真正阻止反向工程,无法达到真正的保护目的。签名验证存在APK被反编译后签名会自动消失,APK保护也会同时失效。综上,现有的应用加固方法,仍存在安全问题,影响移动终端的安全应用和发展。
发明内容
为了解决上述对应用加固方法存在的安全问题,本发明提供一种实现应用加固的方法及装置,能够加固应用,提高应用安全。
为了达到本发明目的,本发明提供了一种实现应用加固的方法,包括:
对经压缩包破坏处理的第一安装包文件进行加壳,生成第二安装包文件,以对应用进行加固。
进一步地,生成第二安装包文件之后,该方法还包括:
从所述第二安装包文件中提取出部分数据并对提取出的部分数据进行加密;
将加密后的部分数据添加到所述提取出部分数据后的第二安装包文件的尾部。
进一步地,部分数据为:所述第二安装包文件中任意的可执行指令和/或动态链接表和/或段信息和/或节信息。
进一步地,提取出部分数据时,该方法还包括:
记录所述部分数据在所述壳保护文件中的位置,以获得提取位置信息。
进一步地,加密提取出的部分数据之前,该方法还包括:
将所述提取位置信息添加到所述提取出的部分数据中的预设位置。
进一步地,将加密后的部分数据添加到所述提取出部分数据后的第二安装包文件的尾部时,该方法还包括:
记录获得添加到所述提取出部分数据后的第二安装包文件的尾部的所述加密后的部分数据的添加位置信息。
进一步地,对提取出的部分数据进行加密具体包括:
对所述提取部分数据通过消息摘要算法第五版MD5进行加密。
进一步地,安装包为安卓安装包APK。
进一步地,在进行APK安装时,该方法还包括:
将所述加密后的部分数据还原为所述第二安装包文件;
在执行完壳代码跳转到APK的原始入口后,通过所述压缩包破坏的文件进行APK安装。
进一步地,所述还原加密后的部分数据为第二安装包文件具体包括:
通过所述添加位置信息读取所述加密后的部分数据;
解密所述加密后的部分数据,从所述预设位置中读取所述提取位置信息;
根据读取的所述提取位置信息,将解密的部分数据还原为所述第二安装包文件。
另一方面,本申请还提供一种实现应用加固的装置,至少包括预处理单元和加固单元,其中,
预处理单元,对安装包文件进行压缩包破坏处理;
加固单元,用于对经压缩包破坏处理的第一安装包文件进行加壳,生成第二安装包文件,以对应用进行加固。
进一步地,该装置还包括提取处理单元,用于所述生成第二安装包文件之后,从所述第二安装包文件中提取出部分数据并对提取出的部分数据进行加密;
将获得的加密后的部分数据添加到所述提取出部分数据后的第二安装包文件的尾部。
进一步地,该装置还包括记录单元,用于所述提取出所述部分数据时,记录加密后的部分数据在所述壳保护文件中的位置,以获得提取位置信息。
进一步地,该装置添加处理单元,用于所述加密提取出的部分数据之前,将所述提取位置信息添加到所述提取出的部分数据中的预设位置。
进一步地,所述记录单元还用于,将所述加密后的部分数据添加到所述提取出部分数据后的第二安装包文件的尾部时,记录获得添加到所述提取出部分数据后的第二安装包文件的尾部的所述加密后的部分数据的添加位置信息。
与现有技术相比,本申请技术方案包括:对经压缩包破坏处理的第一安装包文件进行加壳,生成第二安装包文件,以对应用进行加固。本发明方法对经压缩包破坏处理的第一安装包文件进行加壳,避免了压缩包破坏的第一安装包文件被压缩文件修复工具修复时导致加固保护消失的问题;通过对压缩包破坏的第一安装包文件进行加壳,避免了在执行完壳代码跳转到安装包的原始入口后,被保护安装包的数据都暴露在内存中,实现了应用的加固,提高了安装包文件的安全性。
进一步地,通过从第二安装包文件中提取出部分数据并对提取出的部分数据进行加密,放置于第二安装包文件的尾部的处理,加大了安装包文件的保护力度,进一步提高了安装包文件的安全性。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为本发明实现应用加固的方法的流程图;
图2为本发明实现应用加固的装置的结构框图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
图1为本发明实现应用加固的方法的流程图,如图1所示,包括:
步骤100、对经压缩包破坏处理的第一安装包文件进行加壳,生成第二安装包文件,以对应用进行加固。
需要说明的是,对安装包文件进行压缩包破坏处理属于本领域技术人员的惯用技术手段,在此不再赘述。加壳是指在压缩包破坏处理的第一安装包文件中插入一段代码,在安装过程中,安装文件的入口点即安装包执行的第一条指令指向壳代码,经过加壳处理的软件在运行时会首先进入到壳代码中,在壳代码中把被压缩包破坏处理的第一安装包文件还原,然后再根据压缩包破坏处理的第一安装包文件进行按照。通过加壳可以减小压缩包破坏处理的第一安装包文件体积,便于传输,提高执行效率。
生成第二安装包文件之后,该方法还包括:
步骤101、从第二安装包文件中提取出部分数据并对提取出的部分数据进行加密。
部分数据为:第二安装包文件中任意的可执行指令和/或动态链接表和/或段信息和/或节信息。
对提取出的部分数据进行加密具体包括:
对提取部分数据通过消息摘要算法第五版(MD5)进行加密。
提取出部分数据时,本发明方法还包括:
记录部分数据在壳保护文件中的位置,以获得提取位置信息。
加密提取出的部分数据之前,本发明方法还包括:
将提取位置信息添加到提取出的部分数据中的预设位置。
步骤102、将加密后的部分数据添加到提取出部分数据后的第二安装包文件的尾部。
将加密后的部分数据添加到提取出部分数据后的第二安装包文件的尾部时,本发明方法还包括:
记录获得添加到提取出部分数据后的第二安装包文件的尾部的加密后的部分数据的添加位置信息。
本发明安装包为安卓安装包(APK)。
在进行APK安装时,本发明方法还包括:
将加密后的部分数据还原为第二安装包文件;
在执行完壳代码跳转到APK的原始入口后,通过压缩包破坏的文件进行APK安装。
还原加密后的部分数据为第二安装包文件具体包括:
通过添加位置信息读取加密后的部分数据;
解密加密后的部分数据,从预设位置中读取提取位置信息;
根据读取的提取位置信息,将解密的加密后的部分数据还原为第二安装包文件。
本发明方法对经压缩包破坏处理的第一安装包文件进行加壳,避免了压缩包破坏的第一安装包文件被压缩文件修复工具修复导致加固保护消失;通过对压缩包破坏的第一安装包文件进行加壳,避免了在执行完壳代码跳转到安装包的原始入口后,被保护安装包的数据都暴露在内存中,实现了应用的加固,提高了安装包文件的安全性。进一步地,通过从第二安装包文件中提取出部分数据并对提取出的部分数据进行加密,放置于第二安装包文件的尾部的处理,加大了安装包文件的保护力度,进一步提高了安装包文件的安全性。
图2为本发明实现应用加固的装置的结构框图,如图2所示,至少包括预处理单元和加固单元,其中,
预处理单元,对安装包文件进行压缩包破坏处理;
加固单元,用于对经压缩包破坏处理的第一安装包文件进行加壳,生成第二安装包文件,以对应用进行加固。
本发明装置还包括提取处理单元,用于生成第二安装包文件之后,从第二安装包文件中提取出部分数据并对提取出的部分数据进行加密;
将加密后的部分数据添加到提取出部分数据后的第二安装包文件的尾部。
本发明装置还包括记录单元,用于提取出部分数据时,记录部分数据在壳保护文件中的位置,以获得提取位置信息。
记录单元还用于,将加密后的部分数据添加到提取出部分数据后的第二安装包文件的尾部时,记录获得添加到提取出部分数据后的第二安装包文件的尾部的加密后的部分数据的添加位置信息。
本发明装置还包括添加处理单元,用于加密提取出的部分数据之前,将提取位置信息添加到提取出的部分数据中的预设位置。
虽然本发明所揭露的实施方式如上,但所述的内容仅为便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式及细节上进行任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。

Claims (15)

1.一种实现应用加固的方法,其特征在于,包括:
对经压缩包破坏处理的第一安装包文件进行加壳,生成第二安装包文件,以对应用进行加固。
2.根据权利要求1所述的方法,其特征在于,所述生成第二安装包文件之后,该方法还包括:
从所述第二安装包文件中提取出部分数据并对提取出的部分数据进行加密;
将加密后的部分数据添加到所述提取出部分数据后的第二安装包文件的尾部。
3.根据权利要求2所述的方法,其特征在于,所述部分数据为:所述第二安装包文件中任意的可执行指令和/或动态链接表和/或段信息和/或节信息。
4.根据权利要求2所述的方法,其特征在于,所述提取出部分数据时,该方法还包括:
记录所述部分数据在所述壳保护文件中的位置,以获得提取位置信息。
5.根据权利要求4所述的方法,其特征在于,所述加密提取出的部分数据之前,该方法还包括:
将所述提取位置信息添加到所述提取出的部分数据中的预设位置。
6.根据权利要求5所述的方法,其特征在于,将加密后的部分数据添加到所述提取出部分数据后的第二安装包文件的尾部时,该方法还包括:
记录获得添加到所述提取出部分数据后的第二安装包文件的尾部的所述加密后的部分数据的添加位置信息。
7.根据权利要求2~6任一项所述的方法,其特征在于,所述对提取出的部分数据进行加密具体包括:
对所述提取部分数据通过消息摘要算法第五版MD5进行加密。
8.根据权利要求6所述的方法,其特征在于,所述安装包为安卓安装包APK。
9.根据权利要求8所述的方法,其特征在于,在进行APK安装时,该方法还包括:
将所述加密后的部分数据还原为所述第二安装包文件;
在执行完壳代码跳转到APK的原始入口后,通过所述压缩包破坏的文件进行APK安装。
10.根据权利要求9所述的方法,其特征在于,所述还原加密后的部分数据为第二安装包文件具体包括:
通过所述添加位置信息读取所述加密后的部分数据;
解密所述加密后的部分数据,从所述预设位置中读取所述提取位置信息;
根据读取的所述提取位置信息,将解密的部分数据还原为所述第二安装包文件。
11.一种实现应用加固的装置,其特征在于,至少包括预处理单元和加固单元,其中,
预处理单元,对安装包文件进行压缩包破坏处理;
加固单元,用于对经压缩包破坏处理的第一安装包文件进行加壳,生成第二安装包文件,以对应用进行加固。
12.根据权利要求11所述的装置,其特征在于,该装置还包括提取处理单元,用于所述生成第二安装包文件之后,从所述第二安装包文件中提取出部分数据并对提取出的部分数据进行加密;
将获得的加密后的部分数据添加到所述提取出部分数据后的第二安装包文件的尾部。
13.根据权利要求12所述的装置,其特征在于,该装置还包括记录单元,用于所述提取出所述部分数据时,记录加密后的部分数据在所述壳保护文件中的位置,以获得提取位置信息。
14.根据权利要求13所述的装置,其特征在于,该装置添加处理单元,用于所述加密提取出的部分数据之前,将所述提取位置信息添加到所述提取出的部分数据中的预设位置。
15.根据权利要求14所述的装置,其特征在于,所述记录单元还用于,将所述加密后的部分数据添加到所述提取出部分数据后的第二安装包文件的尾部时,记录获得添加到所述提取出部分数据后的第二安装包文件的尾部的所述加密后的部分数据的添加位置信息。
CN201510268570.3A 2015-05-22 2015-05-22 一种实现应用加固的方法及装置 Withdrawn CN106295263A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201510268570.3A CN106295263A (zh) 2015-05-22 2015-05-22 一种实现应用加固的方法及装置
PCT/CN2016/071604 WO2016188134A1 (zh) 2015-05-22 2016-01-21 一种实现应用加固的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510268570.3A CN106295263A (zh) 2015-05-22 2015-05-22 一种实现应用加固的方法及装置

Publications (1)

Publication Number Publication Date
CN106295263A true CN106295263A (zh) 2017-01-04

Family

ID=57393777

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510268570.3A Withdrawn CN106295263A (zh) 2015-05-22 2015-05-22 一种实现应用加固的方法及装置

Country Status (2)

Country Link
CN (1) CN106295263A (zh)
WO (1) WO2016188134A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107016265A (zh) * 2017-04-12 2017-08-04 金陵科技学院 一种基于加密与控制流混淆的代码安全防护能力测评方法

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112948819B (zh) * 2019-12-10 2024-01-26 中国电信股份有限公司 应用文件脱壳方法和装置、计算机可读存储介质
CN115859225A (zh) * 2021-09-23 2023-03-28 中兴通讯股份有限公司 加固方法、注册方法、运行方法、电子设备和存储介质
CN116170169A (zh) * 2022-11-24 2023-05-26 奇安盘古(上海)信息技术有限公司 一种静态数据提取方法、装置、电子设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102087605A (zh) * 2011-01-28 2011-06-08 宇龙计算机通信科技(深圳)有限公司 一种基于android平台应用安装控制方法及系统
CN103886230A (zh) * 2014-02-24 2014-06-25 四川长虹电器股份有限公司 android系统的软件版权保护方法及其系统
CN104217140A (zh) * 2014-08-29 2014-12-17 北京奇虎科技有限公司 一种应用程序的加固方法和装置
CN104462959A (zh) * 2014-12-04 2015-03-25 北京奇虎科技有限公司 一种安卓应用的加固保护方法、服务器和系统
CN104484585A (zh) * 2014-11-26 2015-04-01 北京奇虎科技有限公司 一种应用程序安装包的处理方法、装置及移动设备

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103902908A (zh) * 2013-12-25 2014-07-02 武汉安天信息技术有限责任公司 一种对Android加固应用的恶意代码检测方法及系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102087605A (zh) * 2011-01-28 2011-06-08 宇龙计算机通信科技(深圳)有限公司 一种基于android平台应用安装控制方法及系统
CN103886230A (zh) * 2014-02-24 2014-06-25 四川长虹电器股份有限公司 android系统的软件版权保护方法及其系统
CN104217140A (zh) * 2014-08-29 2014-12-17 北京奇虎科技有限公司 一种应用程序的加固方法和装置
CN104484585A (zh) * 2014-11-26 2015-04-01 北京奇虎科技有限公司 一种应用程序安装包的处理方法、装置及移动设备
CN104462959A (zh) * 2014-12-04 2015-03-25 北京奇虎科技有限公司 一种安卓应用的加固保护方法、服务器和系统

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107016265A (zh) * 2017-04-12 2017-08-04 金陵科技学院 一种基于加密与控制流混淆的代码安全防护能力测评方法

Also Published As

Publication number Publication date
WO2016188134A1 (zh) 2016-12-01

Similar Documents

Publication Publication Date Title
CN105426708B (zh) 一种Android系统的应用程序的加固方法
CN107977553B (zh) 移动应用程序的安全加固的方法及装置
CN105683990B (zh) 用于保护动态库的方法和装置
US20160203087A1 (en) Method for providing security for common intermediate language-based program
CN107169324A (zh) 一种基于动态加解密的Android应用加固方法
CN107092816B (zh) 一种Android应用程序加固方法
US20160117518A1 (en) File Encryption/Decryption Device And File Encryption/Decryption Method
CN104318135B (zh) 一种基于可信执行环境的Java代码安全动态载入方法
JPWO2006009081A1 (ja) アプリケーション実行装置及びアプリケーション実行装置のアプリケーション実行方法
CN106203006A (zh) 基于dex与so文件动态执行的Android应用加固方法
CN106650327A (zh) 基于动态恢复so文件的Android应用加固方法
CN107273723B (zh) 一种基于so文件加壳的Android平台应用软件保护方法
US20150095653A1 (en) Method and apparatus of creating application package, method and apparatus of executing application package, and recording medium storing application package
CN108133147B (zh) 可执行代码的保护方法、设备及可读存储介质
CN109992987B (zh) 基于Nginx的脚本文件保护方法、装置及终端设备
CN105512521A (zh) 一种软件安装包的加固保护方法和系统
CN111191195A (zh) 一种用于保护apk的方法和装置
CN109241707A (zh) 应用程序的混淆方法、装置和服务器
JP2007233426A (ja) アプリケーション実行装置
CN106295263A (zh) 一种实现应用加固的方法及装置
CN115964681A (zh) 目标应用程序的证书文件的生成方法
US8694548B2 (en) Defense-in-depth security for bytecode executables
CN107257282A (zh) 一种基于rc4算法的代码全包加密方法
CN107122629B (zh) 一种基于随机混淆的Android软件协同加固方法
CN105426702A (zh) 基于安卓操作系统的应用程序加密解密方法和装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
WW01 Invention patent application withdrawn after publication
WW01 Invention patent application withdrawn after publication

Application publication date: 20170104