CN109409039A - 针对包含资源文件的数据压缩包进行加固的方法及装置 - Google Patents

针对包含资源文件的数据压缩包进行加固的方法及装置 Download PDF

Info

Publication number
CN109409039A
CN109409039A CN201811246657.0A CN201811246657A CN109409039A CN 109409039 A CN109409039 A CN 109409039A CN 201811246657 A CN201811246657 A CN 201811246657A CN 109409039 A CN109409039 A CN 109409039A
Authority
CN
China
Prior art keywords
file
resource
data packet
area data
compression 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.)
Pending
Application number
CN201811246657.0A
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.)
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 CN201811246657.0A priority Critical patent/CN109409039A/zh
Publication of CN109409039A publication Critical patent/CN109409039A/zh
Pending legal-status Critical Current

Links

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

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

本发明公开了一种针对包含资源文件的数据压缩包进行加固的方法及装置。其中,该方法包括:获取所述数据压缩包中包含的资源文件,并从所述数据压缩包中删除已获取的资源文件;分别获取所述已获取的资源文件中包含的文件区数据以及目录区数据;针对所述文件区数据进行预设处理,得到第一文件;以及,针对所述目录区数据进行预设处理,得到第二文件;将所述第一文件以及所述第二文件添加到删除已获取的资源文件后得到的数据压缩包中,以得到加固压缩包。通过该方式能够针对数据压缩包中的资源文件进行有针对性地加固处理,提升了资源文件的安全性。

Description

针对包含资源文件的数据压缩包进行加固的方法及装置
技术领域
本发明涉及计算机技术领域,具体涉及一种针对包含资源文件的数据压缩包进行加固的方法及装置。
背景技术
目前,很多数据压缩包中都包含大量的资源文件,包括但不限于:图片资源文件、音频资源文件、视频资源文件、以及文字资源文件等。由于资源文件中包含的信息量较大,因此,有必要针对数据压缩包中的资源文件进行加固处理。
在现有技术中针对数据压缩包进行加固时,大多直接将数据压缩包作为一个整体性的加固对象进行加固。但是,发明人在实现本发明的过程中发现,现有技术中的上述方式至少存在下述缺陷:由于数据压缩包中的数据类型多种多样,直接针对整个数据压缩包进行加固的方式不仅操作繁琐且缺乏针对性,容易导致加固效果不佳,不能有效地对数据压缩包中的资源文件进行保护。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的针对包含资源文件的数据压缩包进行加固的方法及装置。
根据本发明的一个方面,提供了一种针对包含资源文件的数据压缩包进行加固的方法,包括:
获取所述数据压缩包中包含的资源文件,并从所述数据压缩包中删除已获取的资源文件;
分别获取所述已获取的资源文件中包含的文件区数据以及目录区数据;
针对所述文件区数据进行预设处理,得到第一文件;以及,针对所述目录区数据进行预设处理,得到第二文件;
将所述第一文件以及所述第二文件添加到删除已获取的资源文件后得到的数据压缩包中,以得到加固压缩包。
根据本发明的另一方面,提供了一种针对包含资源文件的数据压缩包进行加固的装置,包括:
第一获取模块,适于获取所述数据压缩包中包含的资源文件,并从所述数据压缩包中删除已获取的资源文件;
第二获取模块,适于分别获取所述已获取的资源文件中包含的文件区数据以及目录区数据;
处理模块,适于针对所述文件区数据进行预设处理,得到第一文件;以及,针对所述目录区数据进行预设处理,得到第二文件;
加固模块,适于将所述第一文件以及所述第二文件添加到删除已获取的资源文件后得到的数据压缩包中,以得到加固压缩包。
根据本发明的又一方面,提供了一种电子设备,包括:处理器、存储器、通信接口和通信总线,处理器、存储器和通信接口通过通信总线完成相互间的通信;
存储器用于存放至少一可执行指令,可执行指令使处理器执行上述针对包含资源文件的数据压缩包进行加固的方法对应的操作。
根据本发明的再一方面,提供了一种计算机存储介质,存储介质中存储有至少一可执行指令,可执行指令使处理器执行如上述针对包含资源文件的数据压缩包进行加固的方法对应的操作。
根据本发明公开的针对包含资源文件的数据压缩包进行加固的方法及装置,首先,能够获取数据压缩包中包含的资源文件,并从数据压缩包中删除已获取的资源文件;然后,分别获取已获取的资源文件中包含的文件区数据以及目录区数据,并针对所述文件区数据进行预设处理,得到第一文件,针对所述目录区数据进行预设处理,得到第二文件;最后,将第一文件以及第二文件添加到删除已获取的资源文件后得到的数据压缩包中,以得到加固压缩包。通过该方式能够针对数据压缩包中的资源文件进行有针对性地加固处理,提升了资源文件的安全性。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了本发明一个实施例的针对包含资源文件的数据压缩包进行加固的方法的流程示意图;
图2示出了本发明另一个实施例的针对包含资源文件的数据压缩包进行加固的方法的流程示意图;
图3示出了加固之前的资源压缩包的结构示意图;
图4示出了加固之后的资源压缩包的结构示意图;
图5示出了解密之后的资源压缩包的结构示意图;
图6示出了本发明一个实施例的一种针对包含资源文件的数据压缩包进行加固的装置的装置结构图;
图7示出了根据本发明实施例的一种电子设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了本发明一个实施例的针对包含资源文件的数据压缩包进行加固的方法的流程示意图。如图1所示,该方法包括:
步骤S110:获取数据压缩包中包含的资源文件,并从数据压缩包中删除已获取的资源文件。
本实施例中的数据压缩包可以是安卓安装包(AndroidPackage,即APK),还可以是其他形式的压缩包,具体格式可以是ZIP格式,也可以是RAR格式等,本发明对此不做限定。获取数据压缩包中包含的资源文件时,可以对数据压缩包进行全部解压或局部解压,只要能够得到其中包含的资源文件即可。另外,在获取到数据压缩包中包含的资源文件之后,需要进一步从数据压缩包中删除已获取的资源文件,以避免数据压缩包中包含原始的资源文件所导致的安全问题。
步骤S120:分别获取上述已获取的资源文件中包含的文件区数据以及目录区数据。
具体地,由于资源文件中往往包含多个具体的文件,因此,为了便于查询各个文件,在资源文件中进一步包含文件区数据以及目录区数据。由于文件区数据以及目录区数据的数据内容、数据格式以及数据用途均存在明显差别,因此,在本实施例中,需要分别获取文件区数据以及目录区数据。
其中,文件区数据用于记录每个文件的文件信息,具体可以包括以下中的至少一项:文件头、压缩文件数据、文件描述等各类与文件相关的信息。目录区数据用于快速定位一个文件,具体包括文件的位置信息(例如文件压缩前后的位置)、压缩方式,循环冗余校验码以及文件名等各类与快速查询一个文件相关的信息。
步骤S130:针对文件区数据进行预设处理,得到第一文件;以及,针对目录区数据进行预设处理,得到第二文件。
具体地,需要分别针对文件区数据以及目录区数据进行预设处理,进而分别得到第一文件以及第二文件。具体实施时,预设处理的方式可以为多种,本发明对此不做限定。例如,在一种预设处理方式中,对文件区数据进行另存处理,以便将文件区数据另存为第一文件;对目录区数据进行另存处理,以便将目录区数据另存为第二文件。又如,在另一种预设处理方式中,进一步对第一文件执行加密处理,以得到加密后的第一文件;进一步对第二文件执行加密处理,以得到加密后的第二文件等。
步骤S140:将第一文件以及第二文件添加到删除已获取的资源文件后得到的数据压缩包中,以得到加固压缩包。
具体地,可以直接将第一文件以及第二文件添加到删除已获取的资源文件后得到的数据压缩包中,还可以将第一文件以及第二文件压缩后添加到删除已获取的资源文件后得到的数据压缩包中,以得到加固压缩包。由于加固压缩包中不包含原始的资源文件,仅包含处理后的第一文件以及第二文件,因此,实现了对资源文件进行有针对性地加固的效果。
根据本发明公开的针对包含资源文件的数据压缩包进行加固的方法,首先,能够获取数据压缩包中包含的资源文件,并从数据压缩包中删除已获取的资源文件;然后,分别获取已获取的资源文件中包含的文件区数据以及目录区数据,并针对所述文件区数据进行预设处理,得到第一文件,针对所述目录区数据进行预设处理,得到第二文件;最后,将第一文件以及第二文件添加到删除已获取的资源文件后得到的数据压缩包中,以得到加固压缩包。通过该方式能够针对数据压缩包中的资源文件进行有针对性地加固处理,提升了资源文件的安全性。
图2示出了本发明另一个实施例的针对包含资源文件的数据压缩包进行加固的方法的流程示意图。本实施例以数据压缩包为安卓安装包为例进行说明。如图2所示,该方法包括:
步骤S210:对数据压缩包进行解压,以获取解压后的资源文件,并从数据压缩包中删除已获取的资源文件。
具体地,在对数据压缩包,即原始的安卓安装包进行解压时,可以对数据压缩包进行全部解压,以得到数据压缩包中的全部文件的解压缩版本;也可以对数据压缩包进行局部解压,以得到数据压缩包中的资源文件的解压缩版本。
对数据压缩包进行解压之后,获取解压后的资源文件,以便针对获取到的资源文件进行后续的加固处理。另外,为了避免原始的安卓安装包中保留原始资源文件,还需要进一步从数据压缩包中删除已获取的资源文件。
步骤S220:将已获取的资源文件压缩为资源压缩包,获取该资源压缩包中包含的文件区数据以及目录区数据。
具体地,将已获取的解压缩后的资源文件重新压缩成ZIP格式的资源压缩包。为了便于理解,首先,简单介绍ZIP格式的压缩包的格式规范:ZIP 格式的压缩包通常包含三个部分,文件区数据部分、目录区数据部分以及目录结束标识部分。其中,本实施例中从压缩数据包中获取的资源文件实质上是一个资源文件包,其中包含多个文件。相应地,文件区数据部分用于记录资源文件包中包含的各个文件的文件信息,每个文件的文件信息可以包含文件头、压缩文件数据、和/或文件描述信息。其中,当压缩方式为存储式压缩方式时,文件信息中包含的文件描述信息字段会默认去除。目录区数据部分用于记录资源文件包中包含的各个文件在文件区的位置,具体包括:文件压缩前后的位置、压缩方式、循环冗余校验(Cyclic Redundancy Check,CRC)以及文件名等信息。其中,文件区数据部分所包含的文件的数量以及各个文件之间的排序顺序与目录区数据部分所包含的文件的数量以及各个文件之间的排序顺序相同。目录结束标识部分主要用于记录目录区数据部分开始的位置、目录区长度、文件总个数等相关信息。
在获取该资源压缩包中包含的文件区数据以及目录区数据时,可以将资源压缩包拆分成两部分,一部分对应于文件区数据,另一部分对应于目录区数据。具体拆分时可以根据资源压缩包的总大小、各部分的描述信息进行拆分。
步骤S230:将文件区数据另存为第一文件,将目录区数据另存为第二文件。
具体地,将文件区数据单独保存为第一文件(也叫文件X),将目录区数据单独保存为第二文件(也叫文件Y)。通过第一文件以及第二文件分别存储文件区数据以及目录区数据,便于在后续过程中分别针对两个文件进行预设处理,以便提升每个文件的安全性。
步骤S240:分别针对第一文件以及第二文件执行加密处理后添加到删除已获取的资源文件后得到的数据压缩包中,以得到加固压缩包。
具体地,针对第一文件进行加密处理,得到加密后的第一文件;针对第二文件进行加密处理,得到加密后的第二文件。通过加密能够提升文件的安全性,防止被恶意篡改或窃取。其中,加密处理时可通过各种加密算法实现,本发明对此不做限定。
在将加密后的第一文件以及第二文件添加到删除已获取的资源文件后得到的数据压缩包时,既可以直接添加也可以压缩后添加。在本实施例中,将加密后的第一文件以及第二文件以存储式压缩方式添加到删除已获取的资源文件后得到的数据压缩包中。其中,采用存储式压缩方式至少存在以下优势:首先,采用存储式压缩方式时,在后续的读取及还原过程中不需要执行解压缩操作;其次,采用存储式压缩方式时,文件信息中不包含文件描述信息字段文件。相应地,采用存储式压缩方式能够规避还原过程中因执行解压缩操作和/或因文件信息中包含文件描述信息字段而导致的格式不匹配等异常问题。
具体实施时,可以将加密后的第一文件、加密后的第二文件、以及删除已获取的资源文件后得到的数据压缩包这三个部分组合在一起执行存储式压缩操作。当然,为了使删除已获取的资源文件后得到的数据压缩包的体积更小,也可以先对删除已获取的资源文件后得到的数据压缩包单独执行非存储式压缩操作,然后,将加密后的第一文件、加密后的第二文件、以及执行非存储式压缩操作后的、删除已获取的资源文件后得到的数据压缩包这三个部分组合在一起执行存储式压缩操作。另外,当资源文件进一步包含目录结束标识部分时,也可以将目录结束标识部分与上述的三个部分进行压缩操作。
步骤S250:读取加固压缩包中包含的第一文件以及第二文件。
具体地,本步骤及其后续过程用于实现加固压缩包的解密及还原过程。
其中,在读取加固压缩包中包含的第一文件以及第二文件时,可以先按照常规流程进行读取。下面介绍两种常用的读取加固压缩包,即加固后的安卓安装包的流程:
在第一种流程中,首先,读取目录区数据部分,以获取资源文件包中包含的各个文件的入口信息(即文件存储位置信息)。然后,读取文件区数据部分,以便根据各个文件的入口信息,为文件区数据部分中包含的各个文件的文件信息建立哈希映射表,以便在后续的查找过程直接根据哈希映射表跳转到对应文件的文件入口处,从而快速读取文件。
在第二种流程中,直接读取文件区数据部分,因为文件头部信息中只需要读取30个字节即可获取文件信息,进而通过判断文件名来获取文件,该方法尤其适用于以文件流的形式读取压缩包时使用。相应地,在本实施例中,将文件区数据部分以及目录区数据部分分别存储为独立的文件,能够兼容第二种流程中提到的以文件流的形式读取压缩包的方式,从而拓宽了本实施例的应用场景。
步骤S260:针对第一文件进行还原处理,得到文件区数据;以及,针对第二文件进行还原处理,得到目录区数据。
具体地,本实施例中的还原处理用于将第一文件和/或第二文件还原为原始的资源文件包中的文件区数据以及目录区数据,具体的还原方式取决于加固流程中的预设处理方式,本发明对还原处理的具体细节不做限定。在本实施例中,还原处理包括以下中的至少一个:解压缩处理、解密处理、以及将文件头中包含的文件大小值和/或循环冗余校验码清零等操作。具体地,解压缩处理以及解密处理的具体实现方式取决于加固过程中的压缩方式以及加密方式。由于第一文件以及第二文件均包含文件头,该文件头用于记录文件大小值和/或循环冗余校验码等信息,其中,文件大小值表示第一文件或第二文件的总大小,循环冗余校验码用于对第一文件或第二文件的整体内容的完整性进行校验。在本实施例中需要还原的是:原始的资源文件包中的文件区数据以及目录区数据,其中,文件区数据以及目录区数据中均包含多个文件,且各个文件均具有对应的文件头,由此可见,第一文件以及第二文件的文件头中记录的信息与需要还原的文件区数据以及目录区数据中的各个文件的文件头不同,因此,为了避免第一文件以及第二文件的文件头对后续的还原过程造成干扰,在本实施例中,需要将文件头中包含的文件大小值和/或循环冗余校验码进行清零。
具体实施时,可通过下述方式进行还原操作:首先,定位到第一文件,即文件X,以获取文件X的压缩文件区域的起始位置deltaOff。然后,修改文件X的文件头,将文件X的文件大小和CRC清零,由此一来,文件往后读取就直接可以读到原始的资源文件包中的各个文件的文件头。接下来,定位到第二文件,即文件Y,读取文件Y并解密,以获取所有加固的资源文件包中的文件信息,以便修复所有加固资源文件指向的文件区的位置信息,由于文件X和文件Y是从同一个资源压缩包中抽离的,文件X和文件Y中包含的各个文件的数量和排列顺序完全对应,因此,直接将文件X中获取的信息,例如压缩文件区域的起始位置deltaOff等,与文件Y中获取的信息,例如位置信息等一一对应起来即可。另外,还可以将APK目录区文件X的文件大小和CRC清零;合并APK的目录区和文件Y中的目录区信息;重新初始化目录区和哈希映射表。由此可见,在读取某个加固的资源文件时,判断文件位置是否在文件X的压缩文件区域,如果是,读取后做解密操作就能还原出原来的文件。
另外,当数据压缩包中进一步包含目录结束标识时,需要进一步结合目录结束标识还原加固压缩包中包含的资源文件。
步骤S270:根据文件区数据以及目录区数据还原加固压缩包中包含的资源文件。
由于文件区数据以及目录区数据均被还原为加固前的状态,相应地,根据文件区数据以及目录区数据即可还原加固压缩包中包含的资源文件。
为了便于理解,图3和图4分别示出了加固之前以及加固之后的资源压缩包的结构示意图。如图3所示,加固之前,资源压缩包中共包含三个部分:文件区、目录区、以及目录结束标识。其中,文件区进一步包含多个资源文件,且每个资源文件进一步包含文件头、压缩文件数据以及文件描述信息等 (文件描述信息字段在存储式压缩方式中可以省略)。目录区进一步包含多个资源文件(具体文件名称、数量以及排列顺序与文件区中的多个资源文件完全相同)的目录类相关信息。如图4所示,加固之后,资源压缩包中依然包含三个部分:文件区、目录区、以及目录结束标识。其中,文件区进一步包含文件X以及文件Y,可选地,文件区还可以包含其他文件。其中,文件 X包含文件头以及压缩文件数据,且压缩文件数据进一步包含多个加密后的资源文件。文件Y包含文件头、压缩文件数据以及文件描述信息。目录区进一步包含文件X以及文件Y,可选地,目录区还可以包含其他文件。
图5示出了解密(即还原)之后的资源压缩包的结构示意图。如图4所示,还原之前,资源压缩包中共包含三个部分:文件区、目录区、以及目录结束标识。其中,文件区进一步包含文件X以及文件Y,可选地,文件区还可以包含其他文件。其中,文件X包含文件头以及压缩文件数据,且压缩文件数据进一步包含多个加密后的资源文件。文件Y包含文件头、压缩文件数据以及文件描述信息。目录区进一步包含文件X以及文件Y,可选地,目录区还可以包含其他文件。如图5所示,还原之后,资源压缩包中共包含三个部分:文件区、目录区、以及目录结束标识。其中,文件区进一步包含文件 X(其中包含文件头)、多个资源文件以及文件Y。目录区进一步包含文件X、文件Y、多个资源文件等。通过对文件X进行读取即可获取到各个资源文件。具体地,图5所示的还原过程包括以下步骤:
步骤一、正常读取APK包,并定位到文件X,计算文件X中包含的资源文件的入口信息,并清除文件头信息中的文件长度信息和CRC信息。具体地,获取文件X的压缩文件区域的起始位置,然后,修改文件X的文件头,清除文件头信息中的文件大小(即文件长度)或CRC信息。
步骤二、定位到文件Y,读取文件Y,以读取加固资源的目录信息,并还原加固资源的目录信息。具体地,读取文件Y并解密,获取所有加固资源的文件信息,修复所有加固资源文件指向的文件区的位置信息,因为文件X和文件Y是从同一个压缩包中获取的,所以文件X和文件Y中包含的各个文件的顺序是一一对应的,只需要将位置信息加上文件的入口信息即可。
步骤三、清除APK目录区文件X的长度信息CRC信息。也就是将APK 目录区文件X的文件大小和CRC清零。
步骤四、合并目录区。具体地,合并APK中的目录区和文件Y中的目录区信息。例如,根据步骤三中清除APK目录区文件X的长度信息CRC信息后得到的目录区信息以及步骤二中还原的加固资源的目录信息进行合并,得到合并后的目录区信息。
步骤五、创建哈希表。具体地,重新初始化目录区和哈希表。
步骤六、读取各个文件,并判断该文件是否为加固资源,若是,则解密后处理。具体地,读取某个加固的资源文件时,判断文件位置是否在文件X 的压缩文件区域,如果是,读取后做解密操作就能还原出原来的文件。
由此可见,在图3至图5所示的示例中,将文件X和文件Y分别存储在资源压缩包的文件区和目录区,还原时,需要分别针对文件区中存储的文件 X和文件Y以及目录区中存储的X和文件Y进行还原处理,并将文件区和目录区的相应文件进行合并,以得到最终的还原资源。该方式通过将文件X和文件Y分别存储在两处,能够进一步提升迷惑性,使加固后的压缩包结构与常规压缩包截然不同,从而增加破解难度。并且,该方式中,文件区和目录区均包含完整的数据内容,从而能够兼容上述第二种流程中提到的以文件流的形式读取压缩包的方式,从而拓宽本实施例的应用场景。
综上可知,本实施例中的资源加固方案分为两步:文件隐藏以及文件加密。其中,文件隐藏的目的是将所有需要加固的资源隐藏到特定的文件区域,正常读取APK的过程中无法找到这些资源文件。文件加密进一步对资源文件区域进行加密,防止通过搜索关键字找到资源文件。
发明人在实现本发明的过程中发现:分析APK以便进行读取或加载流程,本质上是对ZIP包的读取过程。为了更好的兼容各个安卓版本的系统和应用,该发明基于ZIP格式标准和文件读取流程,通过修改ZIP中的信息来隐藏资源文件,通过修改文件读取流程来还原ZIP中的资源文件。经测试,该方案能很好地兼容第三方应用,尤其是游戏资源和其他类型的APK,大部分的还原操作都在目录区的还原处,且目录区的操作只要执行一次,至于资源文件的解密,为了保证安全性,只能在读取过程中解密。
另外,在一种可能的加固方式中,对需要加固的资源文件先进行抽离并重新打包;对资源文件加密后将重新打包的资源文件压缩到APK中,来隐藏资源;在APK运行过程中将资源解压出来,并动态加载资源文件进行加固。该方式只能针对系统调用,如果应用直接读取APK获取资源,则会因为APK 中原来的资源被抽离而导致无法正常读取资源。然而,采用本实施例中的方式,由于APK中原来的资源未被抽离,只是以另一种形式被隐藏,因此,不仅适用于系统调用,还能够支持由应用直接读取APK来获取资源。
在另一种可能的加固方式中,直接对资源文件单独进行加密,并监测压缩包的解压流程,以便在解压资源文件后进行解密。该方式虽然可以兼容部分系统和第三方应用,但存在第三方应用自己实现解压缩接口进行加固后程序因无法获取资源文件而崩溃的缺陷。作为第三方加固工具,APK的行为是无法预测的,如果单纯兼容系统的API可能无法更好地适用于市场的应用加固,尤其是游戏资源。
由此可见,本实施例能够打破上述两种加固方式的缺陷,能够广泛应用于系统调用、第三方加固工具以及应用本身直接读取APK的场景中,避免了程序崩溃等问题。
图6示出了本发明一个实施例的一种针对包含资源文件的数据压缩包进行加固的装置的装置结构图,包括:
第一获取模块61,适于获取所述数据压缩包中包含的资源文件,并从所述数据压缩包中删除已获取的资源文件;
第二获取模块62,适于分别获取所述已获取的资源文件中包含的文件区数据以及目录区数据;
处理模块63,适于针对所述文件区数据进行预设处理,得到第一文件;以及,针对所述目录区数据进行预设处理,得到第二文件;
加固模块64,适于将所述第一文件以及所述第二文件添加到删除已获取的资源文件后得到的数据压缩包中,以得到加固压缩包。
可选地,所述第一获取模块61具体适于:对所述数据压缩包进行解压,以获取解压后的资源文件;
则所述第二获取模块62具体适于:将所述已获取的资源文件压缩为资源压缩包,获取所述资源压缩包中包含的文件区数据以及目录区数据。
可选地,所述处理模块63具体适于:将所述文件区数据另存为所述第一文件;将所述目录区数据另存为所述第二文件。
可选地,所述加固模块64具体适于:
分别针对所述第一文件以及所述第二文件执行加密处理后添加到删除已获取的资源文件后得到的数据压缩包中。
可选地,所述加固模块64具体适于:
将所述第一文件以及所述第二文件以存储式压缩方式添加到删除已获取的资源文件后得到的数据压缩包中。
可选地,所述装置进一步包括:还原模块,适于读取所述加固压缩包中包含的第一文件以及第二文件;针对所述第一文件进行还原处理,得到文件区数据;以及,针对所述第二文件进行还原处理,得到目录区数据;根据所述文件区数据以及所述目录区数据还原所述加固压缩包中包含的资源文件。
可选地,所述还原处理包括以下中的至少一个:解压缩处理、解密处理、以及将文件头中包含的文件大小值和/或循环冗余校验码清零。
可选地,所述数据压缩包中进一步包含目录结束标识,则所述还原模块具体适于:
结合所述目录结束标识还原所述加固压缩包中包含的资源文件。
可选地,所述数据压缩包为安卓安装包。
上述各个模块的具体结构和工作原理可参照方法实施例中相应步骤的描述,此处不再赘述。
本申请实施例提供了一种非易失性计算机存储介质,所述计算机存储介质存储有至少一可执行指令,该计算机可执行指令可执行上述任意方法实施例中的针对包含资源文件的数据压缩包进行加固的方法。
图7示出了根据本发明实施例的一种电子设备的结构示意图,本发明具体实施例并不对电子设备的具体实现做限定。
如图7所示,该电子设备可以包括:处理器(processor)702、通信接口(Communications Interface)704、存储器(memory)706、以及通信总线708。
其中:
处理器702、通信接口704、以及存储器706通过通信总线708完成相互间的通信。
通信接口704,用于与其它设备比如客户端或其它服务器等的网元通信。
处理器702,用于执行程序710,具体可以执行上述针对包含资源文件的数据压缩包进行加固的方法实施例中的相关步骤。
具体地,程序710可以包括程序代码,该程序代码包括计算机操作指令。
处理器702可能是中央处理器CPU,或者是特定集成电路ASIC (ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。电子设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个CPU;也可以是不同类型的处理器,如一个或多个CPU以及一个或多个ASIC。
存储器706,用于存放程序710。存储器706可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
程序710具体可以用于使得处理器702执行针对包含资源文件的数据压缩包进行加固的方法实施例中的相关步骤。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的针对包含资源文件的数据压缩包进行加固的装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
本发明还公开了A1.一种针对包含资源文件的数据压缩包进行加固的方法,包括:
获取所述数据压缩包中包含的资源文件,并从所述数据压缩包中删除已获取的资源文件;
分别获取所述已获取的资源文件中包含的文件区数据以及目录区数据;
针对所述文件区数据进行预设处理,得到第一文件;以及,针对所述目录区数据进行预设处理,得到第二文件;
将所述第一文件以及所述第二文件添加到删除已获取的资源文件后得到的数据压缩包中,以得到加固压缩包。
A2.根据A1所述的方法,其中,所述获取所述数据压缩包中包含的资源文件包括:对所述数据压缩包进行解压,以获取解压后的资源文件;
则所述分别获取所述已获取的资源文件中包含的文件区数据以及目录区数据包括:将所述已获取的资源文件压缩为资源压缩包,获取所述资源压缩包中包含的文件区数据以及目录区数据。
A3.根据A1或2所述的方法,其中,所述针对所述文件区数据进行预设处理,得到第一文件包括:将所述文件区数据另存为所述第一文件;
所述针对所述目录区数据进行预设处理,得到第二文件包括:将所述目录区数据另存为所述第二文件。
A4.根据A1-3任一所述的方法,其中,所述将所述第一文件以及所述第二文件添加到删除已获取的资源文件后得到的数据压缩包中包括:
分别针对所述第一文件以及所述第二文件执行加密处理后添加到删除已获取的资源文件后得到的数据压缩包中。
A5.根据A1-4任一所述的方法,其中,所述将所述第一文件以及所述第二文件添加到删除已获取的资源文件后得到的数据压缩包中包括:
将所述第一文件以及所述第二文件以存储式压缩方式添加到删除已获取的资源文件后得到的数据压缩包中。
A6.根据A1-5任一所述的方法,其中,所述将所述第一文件以及所述第二文件添加到删除已获取的资源文件后得到的数据压缩包中,以得到加固压缩包之后,进一步包括:
读取所述加固压缩包中包含的第一文件以及第二文件;
针对所述第一文件进行还原处理,得到文件区数据;以及,针对所述第二文件进行还原处理,得到目录区数据;
根据所述文件区数据以及所述目录区数据还原所述加固压缩包中包含的资源文件。
A7.根据A6所述的方法,其中,所述还原处理包括以下中的至少一个:解压缩处理、解密处理、以及将文件头中包含的文件大小值和/或循环冗余校验码清零。
A8.根据A6或7所述的方法,其中,所述数据压缩包中进一步包含目录结束标识,则所述根据所述文件区数据以及所述目录区数据还原所述加固压缩包中包含的资源文件包括:
结合所述目录结束标识还原所述加固压缩包中包含的资源文件。
A9.根据A1-8任一所述的方法,其中,所述数据压缩包为安卓安装包。
B10.一种针对包含资源文件的数据压缩包进行加固的装置,包括:
第一获取模块,适于获取所述数据压缩包中包含的资源文件,并从所述数据压缩包中删除已获取的资源文件;
第二获取模块,适于分别获取所述已获取的资源文件中包含的文件区数据以及目录区数据;
处理模块,适于针对所述文件区数据进行预设处理,得到第一文件;以及,针对所述目录区数据进行预设处理,得到第二文件;
加固模块,适于将所述第一文件以及所述第二文件添加到删除已获取的资源文件后得到的数据压缩包中,以得到加固压缩包。
B11.根据B10所述的装置,其中,所述第一获取模块具体适于:对所述数据压缩包进行解压,以获取解压后的资源文件;
则所述第二获取模块具体适于:将所述已获取的资源文件压缩为资源压缩包,获取所述资源压缩包中包含的文件区数据以及目录区数据。
B12.根据B10或11所述的装置,其中,所述处理模块具体适于:将所述文件区数据另存为所述第一文件;将所述目录区数据另存为所述第二文件。
B13.根据B10-12任一所述的装置,其中,所述加固模块具体适于:
分别针对所述第一文件以及所述第二文件执行加密处理后添加到删除已获取的资源文件后得到的数据压缩包中。
B14.根据B10-13任一所述的装置,其中,所述加固模块具体适于:
将所述第一文件以及所述第二文件以存储式压缩方式添加到删除已获取的资源文件后得到的数据压缩包中。
B15.根据B10-14任一所述的装置,其中,所述装置进一步包括:
还原模块,适于读取所述加固压缩包中包含的第一文件以及第二文件;针对所述第一文件进行还原处理,得到文件区数据;以及,针对所述第二文件进行还原处理,得到目录区数据;根据所述文件区数据以及所述目录区数据还原所述加固压缩包中包含的资源文件。
B16.根据B14所述的装置,其中,所述还原处理包括以下中的至少一个:解压缩处理、解密处理、以及将文件头中包含的文件大小值和/或循环冗余校验码清零。
B17.根据B15或16所述的装置,其中,所述数据压缩包中进一步包含目录结束标识,则所述还原模块具体适于:
结合所述目录结束标识还原所述加固压缩包中包含的资源文件。
B18.根据B10-17任一所述的装置,其中,所述数据压缩包为安卓安装包。
C19.一种电子设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如A1-9中任一项所述的针对包含资源文件的数据压缩包进行加固的方法对应的操作。
D20.一种计算机存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行如A1-9中任一项所述的针对包含资源文件的数据压缩包进行加固的方法对应的操作。

Claims (10)

1.一种针对包含资源文件的数据压缩包进行加固的方法,包括:
获取所述数据压缩包中包含的资源文件,并从所述数据压缩包中删除已获取的资源文件;
分别获取所述已获取的资源文件中包含的文件区数据以及目录区数据;
针对所述文件区数据进行预设处理,得到第一文件;以及,针对所述目录区数据进行预设处理,得到第二文件;
将所述第一文件以及所述第二文件添加到删除已获取的资源文件后得到的数据压缩包中,以得到加固压缩包。
2.根据权利要求1所述的方法,其中,所述获取所述数据压缩包中包含的资源文件包括:对所述数据压缩包进行解压,以获取解压后的资源文件;
则所述分别获取所述已获取的资源文件中包含的文件区数据以及目录区数据包括:将所述已获取的资源文件压缩为资源压缩包,获取所述资源压缩包中包含的文件区数据以及目录区数据。
3.根据权利要求1或2所述的方法,其中,所述针对所述文件区数据进行预设处理,得到第一文件包括:将所述文件区数据另存为所述第一文件;
所述针对所述目录区数据进行预设处理,得到第二文件包括:将所述目录区数据另存为所述第二文件。
4.根据权利要求1-3任一所述的方法,其中,所述将所述第一文件以及所述第二文件添加到删除已获取的资源文件后得到的数据压缩包中包括:
分别针对所述第一文件以及所述第二文件执行加密处理后添加到删除已获取的资源文件后得到的数据压缩包中。
5.根据权利要求1-4任一所述的方法,其中,所述将所述第一文件以及所述第二文件添加到删除已获取的资源文件后得到的数据压缩包中包括:
将所述第一文件以及所述第二文件以存储式压缩方式添加到删除已获取的资源文件后得到的数据压缩包中。
6.根据权利要求1-5任一所述的方法,其中,所述将所述第一文件以及所述第二文件添加到删除已获取的资源文件后得到的数据压缩包中,以得到加固压缩包之后,进一步包括:
读取所述加固压缩包中包含的第一文件以及第二文件;
针对所述第一文件进行还原处理,得到文件区数据;以及,针对所述第二文件进行还原处理,得到目录区数据;
根据所述文件区数据以及所述目录区数据还原所述加固压缩包中包含的资源文件。
7.根据权利要求6所述的方法,其中,所述还原处理包括以下中的至少一个:解压缩处理、解密处理、以及将文件头中包含的文件大小值和/或循环冗余校验码清零。
8.一种针对包含资源文件的数据压缩包进行加固的装置,包括:
第一获取模块,适于获取所述数据压缩包中包含的资源文件,并从所述数据压缩包中删除已获取的资源文件;
第二获取模块,适于分别获取所述已获取的资源文件中包含的文件区数据以及目录区数据;
处理模块,适于针对所述文件区数据进行预设处理,得到第一文件;以及,针对所述目录区数据进行预设处理,得到第二文件;
加固模块,适于将所述第一文件以及所述第二文件添加到删除已获取的资源文件后得到的数据压缩包中,以得到加固压缩包。
9.一种电子设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如权利要求1-7中任一项所述的针对包含资源文件的数据压缩包进行加固的方法对应的操作。
10.一种计算机存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行如权利要求1-7中任一项所述的针对包含资源文件的数据压缩包进行加固的方法对应的操作。
CN201811246657.0A 2018-10-24 2018-10-24 针对包含资源文件的数据压缩包进行加固的方法及装置 Pending CN109409039A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811246657.0A CN109409039A (zh) 2018-10-24 2018-10-24 针对包含资源文件的数据压缩包进行加固的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811246657.0A CN109409039A (zh) 2018-10-24 2018-10-24 针对包含资源文件的数据压缩包进行加固的方法及装置

Publications (1)

Publication Number Publication Date
CN109409039A true CN109409039A (zh) 2019-03-01

Family

ID=65469633

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811246657.0A Pending CN109409039A (zh) 2018-10-24 2018-10-24 针对包含资源文件的数据压缩包进行加固的方法及装置

Country Status (1)

Country Link
CN (1) CN109409039A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112131193A (zh) * 2020-09-17 2020-12-25 上海上讯信息技术股份有限公司 一种应用程序压缩的方法及设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106295255A (zh) * 2015-05-27 2017-01-04 腾讯科技(深圳)有限公司 应用程序的加固方法和装置
CN106845167A (zh) * 2016-12-12 2017-06-13 北京奇虎科技有限公司 一种apk的加固方法和装置,及动态加载方法和装置
US20170235963A1 (en) * 2016-02-11 2017-08-17 Line Corporation Method, apparatus, system and non-transitory computer readable medium for code protection
US20170308369A1 (en) * 2016-04-25 2017-10-26 Hisense Electric Co., Ltd. Data processing method and device of preset application after upgrading
CN107301343A (zh) * 2017-06-19 2017-10-27 大连中科创达软件有限公司 安全数据处理方法、装置及电子设备

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106295255A (zh) * 2015-05-27 2017-01-04 腾讯科技(深圳)有限公司 应用程序的加固方法和装置
US20170235963A1 (en) * 2016-02-11 2017-08-17 Line Corporation Method, apparatus, system and non-transitory computer readable medium for code protection
US20170308369A1 (en) * 2016-04-25 2017-10-26 Hisense Electric Co., Ltd. Data processing method and device of preset application after upgrading
CN106845167A (zh) * 2016-12-12 2017-06-13 北京奇虎科技有限公司 一种apk的加固方法和装置,及动态加载方法和装置
CN107301343A (zh) * 2017-06-19 2017-10-27 大连中科创达软件有限公司 安全数据处理方法、装置及电子设备

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112131193A (zh) * 2020-09-17 2020-12-25 上海上讯信息技术股份有限公司 一种应用程序压缩的方法及设备
CN112131193B (zh) * 2020-09-17 2023-04-07 上海上讯信息技术股份有限公司 一种应用程序压缩的方法及设备

Similar Documents

Publication Publication Date Title
CN109062582B (zh) 一种应用安装包的加密方法及装置
KR101074010B1 (ko) 블록 단위 데이터 압축 및 복원 방법 및 그 장치
US20160117518A1 (en) File Encryption/Decryption Device And File Encryption/Decryption Method
CN105138333B (zh) 基于安卓系统的apk文件压缩的方法及系统
CN107291485B (zh) 动态链接库的加固方法、运行方法、加固装置和安全系统
WO2005096120A1 (ja) 実行装置
WO2015035827A1 (en) Method and apparatus for providing string encryption and decryption in program files
CN105975311A (zh) 一种应用启动方法及装置
CN108874584B (zh) 数据备份方法、数据还原方法、装置、设备及存储介质
CN110119601A (zh) 基于应用程序安装包的程序加固方法及装置
CN111737718A (zh) 一种jar包的加解密方法、装置、终端设备和存储介质
JP2007233426A (ja) アプリケーション実行装置
CN109409039A (zh) 针对包含资源文件的数据压缩包进行加固的方法及装置
CN110147653A (zh) 应用程序安全加固方法及装置
CN110119600A (zh) 基于应用程序安装包的程序加固方法及装置
CN102750287B (zh) 收录索引信息的方法及下载验证服务器
CN107169370A (zh) 可执行文件的加密方法及加密装置
CN108664796B (zh) 一种so文件保护方法及装置
JP2019096300A (ja) 共有オブジェクトのコード保護のための保安提供装置と方法、及び保安実行装置と方法
CN109934016A (zh) 应用的签名校验方法、装置及电子设备
CN109271759B (zh) 基于安卓平台的so文件安全加固技术方法
CN104484174A (zh) Rar格式的压缩文件的处理方法和装置
CN109657480A (zh) 一种文件处理方法、设备及计算机可读存储介质
CN110110506B (zh) 基于应用程序安装包的程序加固方法及装置
CN110941852A (zh) 一种文件加解密的方法、装置及电子设备

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
RJ01 Rejection of invention patent application after publication

Application publication date: 20190301

RJ01 Rejection of invention patent application after publication