CN106708571A - 资源文件的加载方法、装置和加固资源文件的方法、装置 - Google Patents
资源文件的加载方法、装置和加固资源文件的方法、装置 Download PDFInfo
- Publication number
- CN106708571A CN106708571A CN201611147515.XA CN201611147515A CN106708571A CN 106708571 A CN106708571 A CN 106708571A CN 201611147515 A CN201611147515 A CN 201611147515A CN 106708571 A CN106708571 A CN 106708571A
- Authority
- CN
- China
- Prior art keywords
- resource file
- file
- encryption
- resource
- installation kit
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了资源文件的加载方法、装置和加固资源文件的方法、装置。其中资源文件的加载方法包括:在安卓安装包对应的应用加载资源文件时,判断待加载的资源文件是否为加密资源文件;若是,则获取读/写资源文件的相关函数被调用的事件;将指定的解密逻辑插入该读/写资源文件的相关函数中,由所述解密逻辑对所述加密资源文件进行解密,得到解密后的资源文件;将解密后的资源文件加载到所述应用的进程中。该技术方案实现了资源文件的动态解密,一方面使得破解者无法通过对安卓安装包进行解包得到可直接利用的资源文件,另一方面在应用需要加载资源文件时再执行解密,效率高,对系统资源的浪费小。
Description
技术领域
本发明涉及计算机技术领域,特别涉及资源文件的加载方法、装置和加固资源文件的方法、装置。
背景技术
资源文件的种类很多,例如图片文件等不需要进行编译加工的文件,这些文件在应用运行过程中可以被加载来实现相应的功能。以游戏应用为例,其中某个按钮的贴图为带有“Back”字样的图片,由于该游戏应用未发布中文版本,在该游戏应用未对资源文件进行加固的情况下,未经授权的技术人员可以通过对安装包进行解包,利用图片处理技术修改图片中的“Back”为“返回”,用修改后的文件替换原文件来实现对原游戏应用的汉化处理。
为避免这样的情况发生,许多应用开发者都会对应用的资源文件进行加固处理,因此在应用的安装包中存在的资源文件是加密资源文件,而应用实际需要的是未加密的资源文件,如何在保证资源文件安全的同时,还使得应用可以正确运行是亟待解决的问题。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的资源文件的加载方法、装置和加固资源文件的方法、装置。
依据本发明的一个方面,提供了一种资源文件的加载方法,包括:
在安卓安装包对应的应用加载资源文件时,判断待加载的资源文件是否为加密资源文件;
若是,则获取读/写资源文件的相关函数被调用的事件;
将指定的解密逻辑插入该读/写资源文件的相关函数中,由所述解密逻辑对所述加密资源文件进行解密,得到解密后的资源文件;
将解密后的资源文件加载到所述应用的进程中。
可选地,所述在安卓安装包对应的应用加载资源文件时,判断待加载的资源文件是否为加密资源文件包括:
获取加载资源文件的相关函数被调用的事件;
提取所述加载资源文件的相关函数中的路径cookie值,根据所述路径cookie值判断判断待加载的资源文件是否为加密资源文件。
可选地,其中,该方法还包括:
在所述安卓安装包对应的应用启动时,读取加密资源文件的配置文件到内存中;
所述根据所述路径cookie值判断判断待加载的资源文件是否为加密资源文件包括:
将所述加载资源文件的相关函数中的路径cookie值与所述资源文件的配置文件中的路径cookie值进行匹配,若存在匹配项,则判断所述待加载的资源文件为加密资源文件。
可选地,所述将解密后的资源文件加载到所述应用的进程中包括:
反射调用安卓系统的加载资源文件的应用程序接口API,将解密后的资源文件加载到所述应用的进程中。
可选地,所述反射调用安卓系统的加载资源文件的应用程序接口API包括:
反射调用AssetManager类中的addAssetPath方法,获取所述解密后的资源文件的路径cookie值。
可选地,所述将解密后的资源文件加载到所述应用的进程中包括:
将所述加载资源文件的相关函数中的路径cookie值修改为所述解密后的资源文件的路径cookie值。
可选地,所述加密资源文件是通过对安卓安装包的res目录下指定的资源文件进行整体加密得到的加密资源文件压缩包。
可选地,该方法还包括:
在所述安卓安装包对应的应用启动时,将安卓安装包中的加密资源文件压缩包拷贝至指定位置。
依据本发明的另一方面,提供了一种加固资源文件的方法,包括:
从安卓安装包中提取指定的资源文件;
对所述指定的资源文件进行加密,得到加密资源文件;
从所述安卓安装包中删除所述指定的资源文件,并将加密资源文件存放至所述安卓安装包的指定目录下;
生成与所述加密资源文件对应的加载程序,插入到所述安卓安装包中;所述加载程序用于执行如上述任一项所述的方法。
可选地,所述从安卓安装包中提取指定的资源文件,对所述指定的资源文件进行加密,得到加密资源文件包括:
从所述安卓安装包的res目录中提取指定类型的资源文件,并对提取的所有资源文件进行整体加密,得到加密资源文件压缩包。
可选地,所述生成与所述加密资源文件对应的加载程序,插入到所述安卓安装包中包括:
在所述安卓安装包中的安卓配置文件AndroidManifest.xml中声明:当所述安装包被安装后,每次启动对应的应用时,首先运行所述加载程序。
可选地,所述生成与所述加密资源文件对应的加载程序,插入到所述安卓安装包中插入到所述安装包中包括:
对所述安卓安装包增加外壳;
生成与所述加密资源文件对应的加载程序,插入到所述外壳中。
依据本发明的又一方面,提供了一种资源文件的加载装置,包括:
判断单元,适于在安卓安装包对应的应用加载资源文件时,判断待加载的资源文件是否为加密资源文件;
解密单元,适于在待加载的资源文件为加密资源文件时,获取读/写资源文件的相关函数被调用的事件,将指定的解密逻辑插入该读/写资源文件的相关函数中,由所述解密逻辑对所述加密资源文件进行解密,得到解密后的资源文件;
加载单元,适于将解密后的资源文件加载到所述应用的进程中。
可选地,所述判断单元,适于获取加载资源文件的相关函数被调用的事件;提取所述加载资源文件的相关函数中的路径cookie值,根据所述路径cookie值判断判断待加载的资源文件是否为加密资源文件。
可选地,该装置还包括:
配置文件读取单元,适于在所述安卓安装包对应的应用启动时,读取加密资源文件的配置文件到内存中;
所述判断单元,适于将所述加载资源文件的相关函数中的路径cookie值与所述资源文件的配置文件中的路径cookie值进行匹配,若存在匹配项,则判断所述待加载的资源文件为加密资源文件。
可选地,所述加载单元,适于反射调用安卓系统的加载资源文件的应用程序接口API,将解密后的资源文件加载到所述应用的进程中。
可选地,所述加载单元,适于反射调用AssetManager类中的addAssetPath装置,获取所述解密后的资源文件的路径cookie值。
可选地,所述加载单元,适于将所述加载资源文件的相关函数中的路径cookie值修改为所述解密后的资源文件的路径cookie值。
可选地,所述加密资源文件是通过对安卓安装包的res目录下指定的资源文件进行整体加密得到的加密资源文件压缩包。
可选地,该装置还包括:
拷贝单元,适于在所述安卓安装包对应的应用启动时,将安卓安装包中的加密资源文件压缩包拷贝至指定位置。
依据本发明的再一方面,提供了一种加固资源文件的装置,包括:
提取单元,适于从安卓安装包中提取指定的资源文件;
加密单元,适于对所述指定的资源文件进行加密,得到加密资源文件;
安装包修改单元,适于从所述安卓安装包中删除所述指定的资源文件,并将加密资源文件存放至所述安卓安装包的指定目录下;将如上述任一项所述的资源文件的加载装置插入到安卓安装包中。
可选地,所述提取单元,适于从所述安卓安装包的res目录中提取指定类型的资源文件,并对提取的所有资源文件进行整体加密,得到加密资源文件压缩包。
可选地,所述安装包修改单元,适于在所述安卓安装包中的安卓配置文件AndroidManifest.xml中声明:当所述安装包被安装后,每次启动对应的应用时,首先运行所述资源文件的加载装置。
可选地,所述安装包修改单元,适于对所述安卓安装包增加外壳;
将如上述任一项所述的资源文件的加载装置插入到所述外壳中。
由上述可知,本发明的技术方案,在安卓应用加载资源文件时,如果判断待加载的资源文件是加密资源文件,那么通过监控读/写资源文件的相关函数,获取到读/写资源文件的相关函数被调用的事件,将预设的解密逻辑插入到函数中,对加密资源文件进行解密,将得到的解密的资源文件加载到安卓应用的进程中。该技术方案实现了资源文件的动态解密,一方面使得破解者无法通过对安卓安装包进行解包得到可直接利用的资源文件,另一方面在应用需要加载资源文件时再执行解密,效率高,对系统资源的浪费小。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一个实施例的一种资源文件的加载方法的流程示意图;
图2示出了根据本发明一个实施例的一种加固资源文件的方法的流程示意图;
图3示出了根据本发明一个实施例的一种资源文件的加载装置的结构示意图;
图4示出了根据本发明一个实施例的一种加固资源文件的装置的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了根据本发明一个实施例的一种资源文件的加载方法的流程示意图,如图1所示,该方法包括:
步骤S110,在安卓安装包对应的应用加载资源文件时,判断待加载的资源文件是否为加密资源文件。
步骤S120,若是,则获取读/写资源文件的相关函数被调用的事件。
例如,read(读取)、mmap(将对象映射到内存)、munmap(解除内存映射)等函数。可以对这些函数进行hook,来实现获取这些函数被调用的事件,以及执行步骤S130。
步骤S130,将指定的解密逻辑插入该读/写资源文件的相关函数中,由解密逻辑对加密资源文件进行解密,得到解密后的资源文件。
解密逻辑可以保存在安卓安装包的外壳程序中。一般而言,对安卓安装包进行加固,不仅仅会对资源文件进行加固,还会对SO文件、DLL文件等进行加固,常见的办法是对整个安卓安装包或其中的一些文件进行加壳。解密逻辑包含对资源文件进行解密的算法/代码,这样读/写资源文件的相关函数的结果就是得到了解密后的资源文件。
步骤S140,将解密后的资源文件加载到应用的进程中。之后应用就可以利用资源文件进行画面的呈现等。
可见,图1所示的方法,在安卓应用加载资源文件时,如果判断待加载的资源文件是加密资源文件,那么通过监控读/写资源文件的相关函数,获取到读/写资源文件的相关函数被调用的事件,将预设的解密逻辑插入到函数中,对加密资源文件进行解密,将得到的解密的资源文件加载到安卓应用的进程中。该技术方案实现了资源文件的动态解密,一方面使得破解者无法通过对安卓安装包进行解包得到可直接利用的资源文件,另一方面在应用需要加载资源文件时再执行解密,效率高,对系统资源的浪费小。
在本发明的一个实施例中,图1所示的方法中,在安卓安装包对应的应用加载资源文件时,判断待加载的资源文件是否为加密资源文件包括:获取加载资源文件的相关函数被调用的事件;提取加载资源文件的相关函数中的路径cookie值,根据路径cookie值判断判断待加载的资源文件是否为加密资源文件。
安卓安装包中的资源文件通常保存在asset目录和res目录下,对这两个目录下的资源文件进行加载的方法略有不同。以res目录下的资源文件为例,对这些资源文件进行加载的一个重要步骤是解析resource id,通过解析resource id,可以获取到需要加载的资源文件的路径,进而实现对res目录下的资源文件的加载。安卓系统提供了许多对res目录下的资源文件进行访问的API(Application Programming Interface,应用程序编程接口),这些API中的参数中都带有一个resource id,解析这个resource id可以得到最终需要加载的文件的路径标识,也就是cookie,通过这个cookie,可以确定待加载的res目录下的资源文件的路径。以其中一个API为例:
InputStream openRawResource(int id);
该方法里面的参数id即是上面提到的resource id,安卓系统执行该方法并解析了该resource id之后将调用下面的API:
Asset*AssetManager::openNonAsset(const int32_t cookie,const char*fileName,AccessMode mode)
其中,第一个参数cookie则是安卓系统通过上面openRawResource方法中的参数id解析出来的,openNonAsset函数的第一个参数cookie标识了当前要访问的文件的位置,第二个参数fileName标识了当前要访问的文件的名称。
那么对openNonAsset函数进行hook,就可以获知该函数被调用的事件,这个函数显然是一个加载资源文件的相关函数。那么根据该函数中的路径cookie值,就可以判断待加载的资源文件是否为加密资源文件。
在本发明的一个实施例中,上述方法还包括:在安卓安装包对应的应用启动时,读取加密资源文件的配置文件到内存中;根据路径cookie值判断判断待加载的资源文件是否为加密资源文件包括:将加载资源文件的相关函数中的路径cookie值与资源文件的配置文件中的路径cookie值进行匹配,若存在匹配项,则判断待加载的资源文件为加密资源文件。
在本实施例中,安卓安装包中包含一个加密资源文件的配置文件,该文件中存储了加密资源文件的路径cookie值。那么对于openNonAsset函数中的路径cookie值,如果该值在加密资源文件的配置文件中存在匹配项,就说明本次调用openNonAsset函数是要访问一个加密资源文件。
在本发明的一个实施例中,上述方法中,将解密后的资源文件加载到应用的进程中包括:反射调用安卓系统的加载资源文件的应用程序接口API,将解密后的资源文件加载到应用的进程中。具体地,反射调用安卓系统的加载资源文件的应用程序接口API包括:反射调用AssetManager类中的addAssetPath方法,获取解密后的资源文件的路径cookie值。
解密后的资源文件是需要被加载到应用的进程起来的,这样应用才能利用到这些解密后的资源文件。而需要注意到的是,这些解密后的资源文件并不是直接由加密资源文件直接加载得到的,而是经过了解密处理,也因此需要手动(意为不能执行系统自动加载资源的流程)进行加载。在本实施例中,利用JAVA的反射调用机制,反射调用AssetManager类中的addAssetPath方法,实现了获取解密后的资源文件的路径cookie值。
在得到了解密后的资源文件的路径cookie值之后,就可以将openNonAsset函数中的路径cookie值修改为解密后的资源文件的路径cookie值。因此在本发明的一个实施例中,上述方法中,将解密后的资源文件加载到应用的进程中包括:将加载资源文件的相关函数中的路径cookie值修改为解密后的资源文件的路径cookie值。
在本发明的一个实施例中,上述方法中,加密资源文件是通过对安卓安装包的res目录下指定的资源文件进行整体加密得到的加密资源文件压缩包。具体地,上述方法还包括:在安卓安装包对应的应用启动时,将安卓安装包中的加密资源文件压缩包拷贝至指定位置。
这样,对于解密而言,所有的加密资源文件都被拷贝至指定位置,进行统一的处理,也进一步提升了资源文件的加载效率。
图2示出了根据本发明一个实施例的一种加固资源文件的方法的流程示意图,其中,该方法包括:
步骤S210,从安卓安装包中提取指定的资源文件。
步骤S220,对指定的资源文件进行加密,得到加密资源文件。
步骤S230,从安卓安装包中删除指定的资源文件,并将加密资源文件存放至安卓安装包的指定目录下。
步骤S240,生成与加密资源文件对应的加载程序,插入到安卓安装包中;加载程序用于执行如上述任一实施例中的方法。
在本实施例中,安卓安装包的开发与资源文件的加固可以是分离的。例如,可以由某几个小组进行应用功能的开发,而由安全组对开发完成的安卓安装包中的资源文件进行加固;又例如,可以为开发者提供安装包的加固服务,对多个开发者提供的安装包进行加固处理。
在本发明的一个实施例中,上述方法中,从安卓安装包中提取指定的资源文件,对指定的资源文件进行加密,得到加密资源文件包括:从安卓安装包的res目录中提取指定类型的资源文件,并对提取的所有资源文件进行整体加密,得到加密资源文件压缩包。
并不是所有资源文件都适合进行上述方法中的加固处理,例如,应用的图标需要在桌面上进行展示,而图标本身也是一种资源文件。如果对其进行加固,那么应用的图标就只能在应用启动后才能正常展示,这显然是不符合应用用户的需求的。因此,在本实施例中,可以对应用启动后才需要的资源文件进行加固。又例如游戏类应用,其利用的资源文件数量巨大,也可以从中选取需要重点保护的资源文件进行加固。整体加密可以使得解密时的效率更高,同时不会使得安全性严重下降。
在本发明的一个实施例中,上述方法中,生成与加密资源文件对应的加载程序,插入到安卓安装包中包括:在安卓安装包中的安卓配置文件AndroidManifest.xml中声明:当安卓安装包被安装后,每次启动对应的应用时,首先运行加载程序。
在未对资源文件进行加密时,每当启动对应的应用后,资源文件马上就会被系统加载到内存中,由于本发明中对资源文件进行了加密处理,这些加密资源文件是无法被直接使用的,因此在本实施例中,在安卓配置文件AndroidManifest.xml中声明当安卓安装包被安装后,每次启动对应的应用时,首先运行加载程序,这样确保了加载程序的预先运行,使得应用可以正确利用解密后的资源文件。
在本发明的一个实施例中,上述方法中,生成与加密资源文件对应的加载程序,插入到所述安卓安装包中包括:对安卓安装包增加外壳;生成与加密资源文件对应的加载程序,插入到外壳中。
由于外壳程序早于应用本身的早于应用本身的启动,确保了可以在应用调用资源文件之前对资源文件进行加载和解密。
图3示出了根据本发明一个实施例的一种资源文件的加载装置的结构示意图,如图3所示,资源文件的加载装置300包括:
判断单元310,适于在安卓安装包对应的应用加载资源文件时,判断待加载的资源文件是否为加密资源文件。
解密单元320,适于在待加载的资源文件为加密资源文件时,获取读/写资源文件的相关函数被调用的事件,将指定的解密逻辑插入该读/写资源文件的相关函数中,由解密逻辑对加密资源文件进行解密,得到解密后的资源文件。
加载单元330,适于将解密后的资源文件加载到应用的进程中。
可见,图3所示的装置,在安卓应用加载资源文件时,如果判断待加载的资源文件是加密资源文件,那么通过监控读/写资源文件的相关函数,获取到读/写资源文件的相关函数被调用的事件,将预设的解密逻辑插入到函数中,对加密资源文件进行解密,将得到的解密的资源文件加载到安卓应用的进程中。该技术方案实现了资源文件的动态解密,一方面使得破解者无法通过对安卓安装包进行解包得到可直接利用的资源文件,另一方面在应用需要加载资源文件时再执行解密,效率高,对系统资源的浪费小。
在本发明的一个实施例中,图3所示的装置中,判断单元310,适于获取加载资源文件的相关函数被调用的事件;提取加载资源文件的相关函数中的路径cookie值,根据路径cookie值判断判断待加载的资源文件是否为加密资源文件。
在本发明的一个实施例中,图3所示的装置还包括:配置文件读取单元340,适于在安卓安装包对应的应用启动时,读取加密资源文件的配置文件到内存中;判断单元310,适于将加载资源文件的相关函数中的路径cookie值与资源文件的配置文件中的路径cookie值进行匹配,若存在匹配项,则判断待加载的资源文件为加密资源文件。
在本发明的一个实施例中,上述装置中,加载单元330,适于反射调用安卓系统的加载资源文件的应用程序接口API,将解密后的资源文件加载到应用的进程中。
在本发明的一个实施例中,上述装置中,加载单元330,适于反射调用AssetManager类中的addAssetPath装置,获取解密后的资源文件的路径cookie值。
在本发明的一个实施例中,上述装置中,加载单元330,适于将加载资源文件的相关函数中的路径cookie值修改为解密后的资源文件的路径cookie值。
在本发明的一个实施例中,上述装置中,加密资源文件是通过对安卓安装包的res目录下指定的资源文件进行整体加密得到的加密资源文件压缩包。
在本发明的一个实施例中,上述装置还包括:拷贝单元(图未示),适于在安卓安装包对应的应用启动时,将安卓安装包中的加密资源文件压缩包拷贝至指定位置。
图4示出了根据本发明一个实施例的一种加固资源文件的装置的结构示意图,如图4所示,加固资源文件的装置400包括:
提取单元410,适于从安卓安装包中提取指定的资源文件。
加密单元420,适于对指定的资源文件进行加密,得到加密资源文件。
安装包修改单元430,适于从安卓安装包中删除指定的资源文件,并将加密资源文件存放至安卓安装包的指定目录下;将如上述任一实施例中的资源文件的加载装置300插入到安卓安装包中。
在本实施例中,安卓安装包的开发与资源文件的加固可以是分离的。例如,可以由某几个小组进行应用功能的开发,而由安全组对开发完成的安卓安装包中的资源文件进行加固;又例如,可以为开发者提供安装包的加固服务,对多个开发者提供的安装包进行加固处理。
在本发明的一个实施例中,图4所示的装置中,提取单元410,适于从安卓安装包的res目录中提取指定类型的资源文件,并对提取的所有资源文件进行整体加密,得到加密资源文件压缩包。
在本发明的一个实施例中,图4所示的装置中,安装包修改单元430,适于在安卓安装包中的安卓配置文件AndroidManifest.xml中声明:当安卓安装包被安装后,每次启动对应的应用时,首先运行资源文件的加载装置300。
在本发明的一个实施例中,图4所示的装置中,安装包修改单元430,适于对安卓安装包增加外壳;将如上述任一实施例中的资源文件的加载装置300插入到外壳中。
需要说明的是,上述各装置实施例的具体实施方式与前述对应方法实施例的具体实施方式,在此不再赘述。
综上所述,本发明的技术方案,在安卓应用加载资源文件时,如果判断待加载的资源文件是加密资源文件,那么通过监控读/写资源文件的相关函数,获取到读/写资源文件的相关函数被调用的事件,将预设的解密逻辑插入到函数中,对加密资源文件进行解密,将得到的解密的资源文件加载到安卓应用的进程中。该技术方案实现了资源文件的动态解密,一方面使得破解者无法通过对安卓安装包进行解包得到可直接利用的资源文件,另一方面在应用需要加载资源文件时再执行解密,效率高,对系统资源的浪费小。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
需要说明的是:
在此提供的算法和显示不与任何特定计算机、虚拟装置或者其它设备固有相关。各种通用装置也可以与基于在此的示教一起使用。根据上面的描述,构造这类装置所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的资源文件的加载装置和加固资源文件的装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
本发明的实施例公开了A1、一种资源文件的加载方法,其中,该方法包括:
在安卓安装包对应的应用加载资源文件时,判断待加载的资源文件是否为加密资源文件;
若是,则获取读/写资源文件的相关函数被调用的事件;
将指定的解密逻辑插入该读/写资源文件的相关函数中,由所述解密逻辑对所述加密资源文件进行解密,得到解密后的资源文件;
将解密后的资源文件加载到所述应用的进程中。
A2、如A1所述的方法,其中,所述在安卓安装包对应的应用加载资源文件时,判断待加载的资源文件是否为加密资源文件包括:
获取加载资源文件的相关函数被调用的事件;
提取所述加载资源文件的相关函数中的路径cookie值,根据所述路径cookie值判断判断待加载的资源文件是否为加密资源文件。
A3、如A2所述的方法,其中,该方法还包括:
在所述安卓安装包对应的应用启动时,读取加密资源文件的配置文件到内存中;
所述根据所述路径cookie值判断判断待加载的资源文件是否为加密资源文件包括:
将所述加载资源文件的相关函数中的路径cookie值与所述资源文件的配置文件中的路径cookie值进行匹配,若存在匹配项,则判断所述待加载的资源文件为加密资源文件。
A4、如A2所述的方法,其中,所述将解密后的资源文件加载到所述应用的进程中包括:
反射调用安卓系统的加载资源文件的应用程序接口API,将解密后的资源文件加载到所述应用的进程中。
A5、如A4所述的方法,其中,所述反射调用安卓系统的加载资源文件的应用程序接口API包括:
反射调用AssetManager类中的addAssetPath方法,获取所述解密后的资源文件的路径cookie值。
A6、如A5所述的方法,其中,所述将解密后的资源文件加载到所述应用的进程中包括:
将所述加载资源文件的相关函数中的路径cookie值修改为所述解密后的资源文件的路径cookie值。
A7、如A1-A6中任一项所述的方法,其中,所述加密资源文件是通过对安卓安装包的res目录下指定的资源文件进行整体加密得到的加密资源文件压缩包。
A8、如A7所述的方法,其中,该方法还包括:
在所述安卓安装包对应的应用启动时,将安卓安装包中的加密资源文件压缩包拷贝至指定位置。
本发明的实施例还公开了B9、一种加固资源文件的方法,其中,该方法包括:
从安卓安装包中提取指定的资源文件;
对所述指定的资源文件进行加密,得到加密资源文件;
从所述安卓安装包中删除所述指定的资源文件,并将加密资源文件存放至所述安卓安装包的指定目录下;
生成与所述加密资源文件对应的加载程序,插入到所述安卓安装包中;所述加载程序用于执行如A1-A8中任一项所述的方法。
B10、如B9所述的方法,其中,所述从安卓安装包中提取指定的资源文件,对所述指定的资源文件进行加密,得到加密资源文件包括:
从所述安卓安装包的res目录中提取指定类型的资源文件,并对提取的所有资源文件进行整体加密,得到加密资源文件压缩包。
B11、如B9所述的方法,其中,所述生成与所述加密资源文件对应的加载程序,插入到所述安卓安装包中包括:
在所述安卓安装包中的安卓配置文件AndroidManifest.xml中声明:当所述安装包被安装后,每次启动对应的应用时,首先运行所述加载程序。
B12、如B9所述的方法,其中,所述生成与所述加密资源文件对应的加载程序,插入到所述安卓安装包中包括:
对所述安卓安装包增加外壳;
生成与所述加密资源文件对应的加载程序,插入到所述外壳中。
本发明的实施例还公开了C13、一种资源文件的加载装置,其中,该装置包括:
判断单元,适于在安卓安装包对应的应用加载资源文件时,判断待加载的资源文件是否为加密资源文件;
解密单元,适于在待加载的资源文件为加密资源文件时,获取读/写资源文件的相关函数被调用的事件,将指定的解密逻辑插入该读/写资源文件的相关函数中,由所述解密逻辑对所述加密资源文件进行解密,得到解密后的资源文件;
加载单元,适于将解密后的资源文件加载到所述应用的进程中。
C14、如C13所述的装置,其中,
所述判断单元,适于获取加载资源文件的相关函数被调用的事件;提取所述加载资源文件的相关函数中的路径cookie值,根据所述路径cookie值判断判断待加载的资源文件是否为加密资源文件。
C15、如C14所述的装置,其中,该装置还包括:
配置文件读取单元,适于在所述安卓安装包对应的应用启动时,读取加密资源文件的配置文件到内存中;
所述判断单元,适于将所述加载资源文件的相关函数中的路径cookie值与所述资源文件的配置文件中的路径cookie值进行匹配,若存在匹配项,则判断所述待加载的资源文件为加密资源文件。
C16、如C14所述的装置,其中,
所述加载单元,适于反射调用安卓系统的加载资源文件的应用程序接口API,将解密后的资源文件加载到所述应用的进程中。
C17、如C16所述的装置,其中,
所述加载单元,适于反射调用AssetManager类中的addAssetPath装置,获取所述解密后的资源文件的路径cookie值。
C18、如C17所述的装置,其中,
所述加载单元,适于将所述加载资源文件的相关函数中的路径cookie值修改为所述解密后的资源文件的路径cookie值。
C19、如C13-C18中任一项所述的装置,其中,所述加密资源文件是通过对安卓安装包的res目录下指定的资源文件进行整体加密得到的加密资源文件压缩包。
C20、如C19所述的装置,其中,该装置还包括:
拷贝单元,适于在所述安卓安装包对应的应用启动时,将安卓安装包中的加密资源文件压缩包拷贝至指定位置。
本发明的实施例还公开了D21、一种加固资源文件的装置,其中,该装置包括:
提取单元,适于从安卓安装包中提取指定的资源文件;
加密单元,适于对所述指定的资源文件进行加密,得到加密资源文件;
安装包修改单元,适于从所述安卓安装包中删除所述指定的资源文件,并将加密资源文件存放至所述安卓安装包的指定目录下;将如C13-C20中任一项所述的资源文件的加载装置插入到安卓安装包中。
D22、如D21所述的装置,其中,
所述提取单元,适于从所述安卓安装包的res目录中提取指定类型的资源文件,并对提取的所有资源文件进行整体加密,得到加密资源文件压缩包。
D23、如D21所述的装置,其中,
所述安装包修改单元,适于在所述安卓安装包中的安卓配置文件AndroidManifest.xml中声明:当所述安装包被安装后,每次启动对应的应用时,首先运行所述资源文件的加载装置。
D24、如D21所述的装置,其中,
所述安装包修改单元,适于对所述安卓安装包增加外壳;
将如C13-C20中任一项所述的资源文件的加载装置插入到所述外壳中。
Claims (10)
1.一种资源文件的加载方法,其中,该方法包括:
在安卓安装包对应的应用加载资源文件时,判断待加载的资源文件是否为加密资源文件;
若是,则获取读/写资源文件的相关函数被调用的事件;
将指定的解密逻辑插入该读/写资源文件的相关函数中,由所述解密逻辑对所述加密资源文件进行解密,得到解密后的资源文件;
将解密后的资源文件加载到所述应用的进程中。
2.如权利要求1所述的方法,其中,所述在安卓安装包对应的应用加载资源文件时,判断待加载的资源文件是否为加密资源文件包括:
获取加载资源文件的相关函数被调用的事件;
提取所述加载资源文件的相关函数中的路径cookie值,根据所述路径cookie值判断判断待加载的资源文件是否为加密资源文件。
3.如权利要求2所述的方法,其中,该方法还包括:
在所述安卓安装包对应的应用启动时,读取加密资源文件的配置文件到内存中;
所述根据所述路径cookie值判断判断待加载的资源文件是否为加密资源文件包括:
将所述加载资源文件的相关函数中的路径cookie值与所述资源文件的配置文件中的路径cookie值进行匹配,若存在匹配项,则判断所述待加载的资源文件为加密资源文件。
4.一种加固资源文件的方法,其中,该方法包括:
从安卓安装包中提取指定的资源文件;
对所述指定的资源文件进行加密,得到加密资源文件;
从所述安卓安装包中删除所述指定的资源文件,并将加密资源文件存放至所述安卓安装包的指定目录下;
生成与所述加密资源文件对应的加载程序,插入到所述安卓安装包中;所述加载程序用于执行如权利要求1-3中任一项所述的方法。
5.如权利要求4所述的方法,其中,所述从安卓安装包中提取指定的资源文件,对所述指定的资源文件进行加密,得到加密资源文件包括:
从所述安卓安装包的res目录中提取指定类型的资源文件,并对提取的所有资源文件进行整体加密,得到加密资源文件压缩包。
6.一种资源文件的加载装置,其中,该装置包括:
判断单元,适于在安卓安装包对应的应用加载资源文件时,判断待加载的资源文件是否为加密资源文件;
解密单元,适于在待加载的资源文件为加密资源文件时,获取读/写资源文件的相关函数被调用的事件,将指定的解密逻辑插入该读/写资源文件的相关函数中,由所述解密逻辑对所述加密资源文件进行解密,得到解密后的资源文件;
加载单元,适于将解密后的资源文件加载到所述应用的进程中。
7.如权利要求6所述的装置,其中,
所述判断单元,适于获取加载资源文件的相关函数被调用的事件;提取所述加载资源文件的相关函数中的路径cookie值,根据所述路径cookie值判断判断待加载的资源文件是否为加密资源文件。
8.如权利要求7所述的装置,其中,该装置还包括:
配置文件读取单元,适于在所述安卓安装包对应的应用启动时,读取加密资源文件的配置文件到内存中;
所述判断单元,适于将所述加载资源文件的相关函数中的路径cookie值与所述资源文件的配置文件中的路径cookie值进行匹配,若存在匹配项,则判断所述待加载的资源文件为加密资源文件。
9.一种加固资源文件的装置,其中,该装置包括:
提取单元,适于从安卓安装包中提取指定的资源文件;
加密单元,适于对所述指定的资源文件进行加密,得到加密资源文件;
安装包修改单元,适于从所述安卓安装包中删除所述指定的资源文件,并将加密资源文件存放至所述安卓安装包的指定目录下;将如权利要求6-8中任一项所述的资源文件的加载装置插入到安卓安装包中。
10.如权利要求9所述的装置,其中,
所述提取单元,适于从所述安卓安装包的res目录中提取指定类型的资源文件,并对提取的所有资源文件进行整体加密,得到加密资源文件压缩包。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611147515.XA CN106708571A (zh) | 2016-12-13 | 2016-12-13 | 资源文件的加载方法、装置和加固资源文件的方法、装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611147515.XA CN106708571A (zh) | 2016-12-13 | 2016-12-13 | 资源文件的加载方法、装置和加固资源文件的方法、装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106708571A true CN106708571A (zh) | 2017-05-24 |
Family
ID=58935766
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611147515.XA Pending CN106708571A (zh) | 2016-12-13 | 2016-12-13 | 资源文件的加载方法、装置和加固资源文件的方法、装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106708571A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108089880A (zh) * | 2017-12-28 | 2018-05-29 | 北京奇虎科技有限公司 | 对应用程序安装文件进行预处理的方法、装置和服务器 |
CN109145619A (zh) * | 2018-08-13 | 2019-01-04 | 中金金融认证中心有限公司 | 一种Android应用程序资源加固方法及系统 |
CN109657488A (zh) * | 2019-02-26 | 2019-04-19 | 北京智游网安科技有限公司 | 一种资源文件加密处理方法、智能终端及存储介质 |
CN111124470A (zh) * | 2019-12-17 | 2020-05-08 | 口碑(上海)信息技术有限公司 | 基于云平台的程序包自动优化方法及装置 |
WO2020103059A1 (zh) * | 2018-11-21 | 2020-05-28 | 深圳市欢太科技有限公司 | 数据处理方法、装置、电子设备以及存储介质 |
CN112417484A (zh) * | 2020-11-26 | 2021-02-26 | 江苏通付盾信息安全技术有限公司 | 资源文件保护方法、装置、计算机设备和存储介质 |
CN112818359A (zh) * | 2020-12-31 | 2021-05-18 | 北京深思数盾科技股份有限公司 | 一种文件保护方法及装置 |
CN114297589A (zh) * | 2021-12-28 | 2022-04-08 | 北京深思数盾科技股份有限公司 | 应用程序的资源保护方法、资源读取方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104217140A (zh) * | 2014-08-29 | 2014-12-17 | 北京奇虎科技有限公司 | 一种应用程序的加固方法和装置 |
CN104392181A (zh) * | 2014-11-18 | 2015-03-04 | 北京奇虎科技有限公司 | So文件的保护方法、装置及安卓安装包的加固方法和系统 |
CN104680039A (zh) * | 2013-11-28 | 2015-06-03 | 腾讯科技(深圳)有限公司 | 一种应用程序安装包的数据保护方法及装置 |
CN105608391A (zh) * | 2015-12-17 | 2016-05-25 | 北京奇虎科技有限公司 | 多elf文件保护方法及系统 |
-
2016
- 2016-12-13 CN CN201611147515.XA patent/CN106708571A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104680039A (zh) * | 2013-11-28 | 2015-06-03 | 腾讯科技(深圳)有限公司 | 一种应用程序安装包的数据保护方法及装置 |
CN104217140A (zh) * | 2014-08-29 | 2014-12-17 | 北京奇虎科技有限公司 | 一种应用程序的加固方法和装置 |
CN104392181A (zh) * | 2014-11-18 | 2015-03-04 | 北京奇虎科技有限公司 | So文件的保护方法、装置及安卓安装包的加固方法和系统 |
CN105608391A (zh) * | 2015-12-17 | 2016-05-25 | 北京奇虎科技有限公司 | 多elf文件保护方法及系统 |
Non-Patent Citations (1)
Title |
---|
李璟莹: "手机二维码的安全问题研究", 《无线通信与移动互联网安全》 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108089880A (zh) * | 2017-12-28 | 2018-05-29 | 北京奇虎科技有限公司 | 对应用程序安装文件进行预处理的方法、装置和服务器 |
CN109145619A (zh) * | 2018-08-13 | 2019-01-04 | 中金金融认证中心有限公司 | 一种Android应用程序资源加固方法及系统 |
WO2020103059A1 (zh) * | 2018-11-21 | 2020-05-28 | 深圳市欢太科技有限公司 | 数据处理方法、装置、电子设备以及存储介质 |
CN112823349A (zh) * | 2018-11-21 | 2021-05-18 | 深圳市欢太科技有限公司 | 数据处理方法、装置、电子设备以及存储介质 |
CN109657488A (zh) * | 2019-02-26 | 2019-04-19 | 北京智游网安科技有限公司 | 一种资源文件加密处理方法、智能终端及存储介质 |
CN109657488B (zh) * | 2019-02-26 | 2021-09-28 | 北京智游网安科技有限公司 | 一种资源文件加密处理方法、智能终端及存储介质 |
CN111124470A (zh) * | 2019-12-17 | 2020-05-08 | 口碑(上海)信息技术有限公司 | 基于云平台的程序包自动优化方法及装置 |
CN112417484A (zh) * | 2020-11-26 | 2021-02-26 | 江苏通付盾信息安全技术有限公司 | 资源文件保护方法、装置、计算机设备和存储介质 |
CN112818359A (zh) * | 2020-12-31 | 2021-05-18 | 北京深思数盾科技股份有限公司 | 一种文件保护方法及装置 |
CN114297589A (zh) * | 2021-12-28 | 2022-04-08 | 北京深思数盾科技股份有限公司 | 应用程序的资源保护方法、资源读取方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106708571A (zh) | 资源文件的加载方法、装置和加固资源文件的方法、装置 | |
CN104462959B (zh) | 一种安卓应用的加固保护方法、服务器和系统 | |
CN105068932B (zh) | 一种Android应用程序加壳的检测方法 | |
Chen et al. | Mystique: Uncovering information leakage from browser extensions | |
CN104392181A (zh) | So文件的保护方法、装置及安卓安装包的加固方法和系统 | |
Felt et al. | Android permissions demystified | |
CN105653432B (zh) | 一种崩溃数据的处理方法和装置 | |
Akhawe et al. | Privilege Separation in {HTML5} Applications | |
EP3038004A1 (en) | Method for providing security for common intermediate language-based program | |
US8090959B2 (en) | Method and apparatus for protecting .net programs | |
WO2015192637A1 (zh) | 软件安装包的加固保护方法和装置 | |
WO2016078130A1 (zh) | 一种防逆向apk文件的动态加载方法 | |
CN104463002A (zh) | 一种加固apk的方法和装置以及apk加固客户端和服务器 | |
CN104484585A (zh) | 一种应用程序安装包的处理方法、装置及移动设备 | |
CN108229112A (zh) | 一种保护应用程序、应用程序的运行方法以及装置 | |
CN106355049A (zh) | 一种加固安卓安装包的动态链接库so文件的方法和装置 | |
CN106293852A (zh) | 一种加固安装包的资源文件的方法和装置 | |
CN106295370A (zh) | 一种加固安装包的动态链接库dll文件的方法和装置 | |
CN107430650A (zh) | 保护计算机程序以抵御逆向工程 | |
CN105760721B (zh) | 一种软件加固方法和系统 | |
CN104615933A (zh) | 防软件反编译的方法、防反编译软件启动的方法和装置 | |
CN105740703A (zh) | 一种应用程序的加固方法及装置 | |
CN110597496B (zh) | 应用程序的字节码文件获取方法及装置 | |
CN106650337A (zh) | 对安装包中的脚本文件进行处理的方法和装置 | |
Gallingani | Static detection and automatic exploitation of intent message vulnerabilities in Android applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170524 |