CN108089880A - 对应用程序安装文件进行预处理的方法、装置和服务器 - Google Patents
对应用程序安装文件进行预处理的方法、装置和服务器 Download PDFInfo
- Publication number
- CN108089880A CN108089880A CN201711464044.XA CN201711464044A CN108089880A CN 108089880 A CN108089880 A CN 108089880A CN 201711464044 A CN201711464044 A CN 201711464044A CN 108089880 A CN108089880 A CN 108089880A
- Authority
- CN
- China
- Prior art keywords
- resource
- file
- title
- application program
- resource file
- 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/70—Software maintenance or management
- G06F8/73—Program documentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
- G06F16/164—File meta data generation
- G06F16/166—File name conversion
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Library & Information Science (AREA)
- Human Computer Interaction (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种对应用程序安装文件进行预处理的方法,所述方法中,将项目目录中的资源文件名称和资源ID根据预设的重命名规则分别生成字符串,并根据前后命名的映射关系生成映射文件;将项目目录中资源文件夹中和代码文件夹中的资源文件名称和资源ID根据所述映射文件记载的映射关系进行重命名;将重命名后的资源文件、代码文件以及项目目录中的其余安装文件打包生成应用程序的安装包。通过对长度较长的资源文件名称和资源ID根据重命名规则分别生成长度较短的字符串,降低信息的字节数,可以有效减少安装包的体积。并且提高了应用程序安装包被第三方逆向破解的难度,提高了安装包的安全性。相应还提供了一种对应用程序安装文件进行预处理的装置和服务器。
Description
技术领域
本发明涉及应用程序安装包生成技术领域,具体而言,本发明涉及一种对应用程序安装文件进行预处理的方法、装置和服务器。
背景技术
近年来,应用程序(APP)的功能越来越多,应用程序安装包中的安装文件也越来越多,应用程序安装包的体积也越来越大,从而占据的存储空间也越来越大。而且随着第三方逆向破解应用程序安装包的技术的逐渐发展,应用程序安装包的安全性有待提高。
发明内容
本发明的目的旨在至少能解决上述的技术缺陷之一,特别是应用程序安装包的体积较大的技术缺陷。
本发明提供一种对应用程序安装文件进行预处理的方法,包括如下步骤:
将项目目录中的资源文件名称和资源ID根据预设的重命名规则分别生成字符串,并根据前后命名的映射关系生成映射文件;
将项目目录中资源文件夹中的资源文件名称、资源ID,以及代码文件夹中的资源文件名称、资源ID根据所述映射文件记载的映射关系进行重命名;
将重命名后的资源文件、代码文件以及项目目录中的其余安装文件打包生成应用程序的安装包。
在其中一个实施例中,将项目目录中没有处于预设白名单中的资源文件名称和资源ID根据预设的重命名规则分别生成字符串。
在其中一个实施例中,所述预设白名单中包括:
具有预设前缀的资源文件名称、资源ID;或
具有预设后缀的资源文件名称、资源ID;或
具有预设字符串的资源文件名称、资源ID。
在其中一个实施例中,所述预设白名单中包括:
设定类型资源文件的资源文件名称、资源ID。
在其中一个实施例中,所述重命名规则包括:
使用单个英文字母或多个英文字母的组合替换资源文件名称和/或资源ID。
在其中一个实施例中,所述重命名规则包括:
使用英文字母和数字的组合替换资源文件名称和/或资源ID。
在其中一个实施例中,所述重命名规则包括:
根据资源文件名称和资源ID在项目目录中的出现顺序依次组合英文字母和/或数字替换资源文件名称和/或资源ID。
在其中一个实施例中,所述重命名规则包括:
重命名生成的字符串长度少于预设阈值。
在其中一个实施例中,将项目目录中资源文件夹中和代码文件夹中的资源文件名称和资源ID根据所述映射文件记载的映射关系进行重命名的步骤中,遍历资源文件夹中的资源文件和代码文件夹中的代码文件,对其文件名称和文件内容进行字符串正则匹配。
在其中一个实施例中,打包生成应用程序的安装包的步骤中,还将加密处理后的映射文件一起打包。
在其中一个实施例中,还包括步骤:
将所述映射文件进行加密处理,并将加密处理后的映射文件与所述应用程序的安装包建立映射关系后存储。
在其中一个实施例中,所述资源文件至少包括以下文件类型中的一种:XML文件、图片文件、音频文件、视频文件、动画文件。
本发明还提供一种对应用程序安装文件进行预处理的装置,包括:
生成模块,用于将项目目录中的资源文件名称和资源ID根据预设的重命名规则分别生成字符串,并根据前后命名的映射关系生成映射文件;
重命名模块,用于将项目目录中资源文件夹中的资源文件名称、资源ID,以及代码文件夹中的资源文件名称、资源ID根据所述映射文件记载的映射关系进行重命名;
打包模块,用于将重命名后的资源文件、代码文件以及项目目录中的其余安装文件打包生成应用程序的安装包。
在其中一个实施例中,所述生成模块用于:将项目目录中没有处于预设白名单中的资源文件名称和资源ID根据预设的重命名规则分别生成字符串。
在其中一个实施例中,所述预设白名单中包括:
具有预设前缀的资源文件名称、资源ID;或
具有预设后缀的资源文件名称、资源ID;或
具有预设字符串的资源文件名称、资源ID。
在其中一个实施例中,所述预设白名单中包括:
设定类型资源文件的资源文件名称、资源ID。
在其中一个实施例中,所述重命名规则包括:
使用单个英文字母或多个英文字母的组合替换资源文件名称和/或资源ID。
在其中一个实施例中,所述重命名规则包括:
使用英文字母和数字的组合替换资源文件名称和/或资源ID。
在其中一个实施例中,所述重命名规则包括:
根据资源文件名称和资源ID在项目目录中的出现顺序依次组合英文字母和/或数字替换资源文件名称和/或资源ID。
在其中一个实施例中,所述重命名规则包括:
重命名生成的字符串长度少于预设阈值。
在其中一个实施例中,所述重命名模块用于:遍历资源文件夹中的资源文件和代码文件夹中的代码文件,对其文件名称和文件内容进行字符串正则匹配。
在其中一个实施例中,所述打包模块用于:将加密处理后的映射文件一起打包。
在其中一个实施例中,还包括加密存储模块,所述加密存储模块:将所述映射文件进行加密处理,并将加密处理后的映射文件与所述应用程序的安装包建立映射关系后存储。
在其中一个实施例中,所述资源文件至少包括以下文件类型中的一种:XML文件、图片文件、音频文件、视频文件、动画文件。
本发明还提供一种服务器,其包括:
一个或多个处理器;
存储器,存储有程序代码,当所述程序代码由所述一个或多个处理器运行时,所述服务器执行根据上述任一项实施例所述的对应用程序安装文件进行预处理的方法。
上述的对应用程序安装文件进行预处理的方法、装置和服务器,将项目目录中的资源文件名称和资源ID根据预设的重命名规则分别生成字符串,并根据前后命名的映射关系生成映射文件;将项目目录中资源文件夹中的资源文件名称、资源ID,以及代码文件夹中的资源文件名称、资源ID根据所述映射文件记载的映射关系进行重命名;将重命名后的资源文件、代码文件以及项目目录中的其余安装文件打包生成应用程序的安装包。通过对长度较长的资源文件名称和资源ID根据重命名规则分别生成长度较短的字符串,降低信息的字节数,可以有效减少安装包的体积。并且提高了应用程序安装包被第三方逆向破解的难度,提高了安装包的安全性。
本发明附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为一个实施例的对应用程序安装文件进行预处理的方法流程示意图;
图2为一个实施例的对应用程序安装文件进行预处理的装置模块示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
本技术领域技术人员可以理解,这里所使用的“终端”、“终端设备”既包括无线信号接收器的设备,其仅具备无发射能力的无线信号接收器的设备,又包括接收和发射硬件的设备,其具有能够在双向通讯链路上,执行双向通讯的接收和发射硬件的设备。这种设备可以包括:蜂窝或其他通讯设备,其具有单线路显示器或多线路显示器或没有多线路显示器的蜂窝或其他通讯设备;PCS(Personal Communications Service,个人通讯系统),其可以组合语音、数据处理、传真和/或数据通讯能力;PDA(Personal Digital Assistant,个人数字助理),其可以包括射频接收器、寻呼机、互联网/内联网访问、网络浏览器、记事本、日历和/或GPS(Global Positioning System,全球定位系统)接收器;常规膝上型和/或掌上型计算机或其他设备,其具有和/或包括射频接收器的常规膝上型和/或掌上型计算机或其他设备。这里所使用的“终端”、“终端设备”可以是便携式、可运输、安装在交通工具(航空、海运和/或陆地)中的,或者适合于和/或配置为在本地运行,和/或以分布形式,运行在地球和/或空间的任何其他位置运行。这里所使用的“终端”、“终端设备”还可以是通讯终端、上网终端、音乐/视频播放终端,例如可以是PDA、MID(Mobile Internet Device,移动互联网设备)和/或具有音乐/视频播放功能的移动电话,也可以是智能电视、机顶盒等设备。
图1为一个实施例的对应用程序安装文件进行预处理的方法流程示意图。本发明提供一种对应用程序安装文件进行预处理的方法,包括如下步骤:
步骤S100:将项目目录中的资源文件名称和资源ID根据预设的重命名规则分别生成字符串,并根据前后命名的映射关系生成映射文件。映射文件又称map文件,用于记录资源文件名称和资源ID重命名前后的名称的映射关系。
以安卓系统为例,安卓的项目目录中,主要包括代码文件、资源文件和配置文件等等,代码文件通常是Java文件,而资源文件通常包括XML文件、图片文件、音频文件、视频文件、动画文件这些文件,放置在res文件夹中。以下是项目目录的一个示例:
res目录下所有的资源文件都会在R.java文件下生成对应的资源ID,我们可以直接通过资源ID访问到对应的资源;这个R.java文件可以理解为字典,res下每个资源都都会在这里生成一个唯一的资源ID。在Android应用开发的时候,可以通过R.id.xxx来非常方便的访问应用程序的资源。
资源ID最终要编译成二进制格式的,例如在layout1.xml里面这样写<Buttonandroid:id="@+id/button1">,然后AAPT会生成R.java文件public static final intbutton1=0x7f05000b,接下来在生成*.apk的时候,像@+id/button1这样的资源ID会用“0x7f05000b”这样的数字代替。因此,可以见到,像@+id/button1和0x7f05000b这样的字符串的名称都很长。
以下对res文件夹中的资源文件做简单介绍:
1.图片资源:
drawable:存放各种位图文件及一些其他的drawable类型的XML文件
mipmap-hdpi:高分辨率
mipmap-mdpi:中等分辨率
mipmap-xhdpi:超高分辨率
mipmap-xxhdpi:超超高分辨率
2.布局资源:
layout:该目录下存放的是布局文件
3.菜单资源:
menu:菜单项相关的资源xml可在这里编写
4.values目录
demens.xml:定义尺寸资源
string.xml:定义字符串资源
styles.xml:定义样式资源
colors.xml:定义颜色资源
arrays.xml:定义数组资源
attrs.xml:自定义控件的属性
theme:主题文件
5.raw目录:
用于存放各种原生资源(音频,视频,一些XML文件等)
6.动画:
animator:存放属性动画的XML文件
anim:存放补间动画的XML文件
传统开发中,为了开发方便、容易识别,很多的资源文件和资源ID的名称都很长,调用这些资源文件和资源ID的时候,在代码中会占据比较多的字符。这种的资源文件和资源ID很多的话,会直接导致应用程序的安装包体积很大,而且运行时占用的内存也会很大。将项目目录中的这些资源文件名称和资源ID简化成简短的字符串,可以有效改善这种情况。因此,可以将项目目录中的这些资源文件名称和资源ID根据预设的重命名规则分别生成字符串,并根据前后命名的映射关系生成映射文件。以下介绍一些生成字符串时所遵从的重命名规则。
考虑到字符串要简短,需要对重命名生成的字符串的长度进行限定,例如重命名生成的字符串长度少于预设阈值(例如字符串长度少于5),重命名规则应当以此作为基本原则。
重命名规则1:使用单个英文字母或多个英文字母的组合替换资源文件名称和/或资源ID。以资源文件名称为例,用a来替换资源文件1的名称,用b来替换资源文件2的名称,用c来替换资源文件3的名称,按字母顺序进行替换,用z来替换资源文件26的名称。接着从aa开始,用aa来替换资源文件27的名称……直至用到az替换资源文件52的名称。接着再从ba开始,用ba来替换资源文件53的名称……直至用到bz替换资源文件78的名称。接着再从ca开始……以此类推,按字母顺序进行替换,直到所有的资源文件名称都被替换完为止。其中,所述的资源文件1~资源文件78都表示资源文件名称相异的资源文件。
重命名规则2:使用英文字母和数字的组合替换资源文件名称和/或资源ID。以资源文件名称为例,用a1替换资源文件夹中资源文件1的名称,用a2替换资源文件夹中资源文件2的名称,用a3替换资源文件夹中资源文件3的名称……用a100替换资源文件夹中资源文件100的名称,以此类推,将b1~b100分别替换资源文件夹中资源文件101~资源文件100的名称,将c1~c100分别替换资源文件夹中资源文件201~资源文件300的名称……,即以字母+数字的形式以此进行替换,直到所有的资源文件名称都被替换完为止。其中,所述的资源文件1~资源文件300都表示资源文件名称相异的资源文件。
重命名规则3:根据资源文件名称和资源ID在项目目录中的出现顺序依次组合英文字母和/或数字替换资源文件名称和/或资源ID,即按照资源文件名称和资源ID在项目目录中的出现顺序来进行替换,以资源文件名称为例,例如上述的资源文件1~资源文件300在项目目录中的出现顺序为第1~第300,则可以按照上述重命名规则3进行替换。
在一些实施例中,资源文件名称和资源ID可以根据不同的重命名规则生成字符串,以方便开发者区别资源文件名称和资源ID。例如,使用单个英文字母或多个英文字母的组合替换资源文件名称,而使用英文字母和数字的组合替换资源ID,在此不做限定。
在一些实施例中,可以将项目目录中没有处于预设白名单中的资源文件名称和资源ID根据预设的重命名规则分别生成字符串。可以预设一个白名单,在生成字符串时忽略白名单中的资源文件名称和资源ID,即白名单中存在的资源文件名称和资源ID则不进行重命名,这样可以保护从第三方库引用进来的资源,确保能够正常引用。
资源文件的名称或资源ID,通常很多具有相同的前缀、后缀,例如某些子资源文件是继承于其父资源文件的或同一数据库的,此时它们的名称之间通常具有相同的前缀或后缀。又或者,某一类资源文件或资源ID之间可能由于是服务于同一对象,所以这些资源文件的名称或资源ID之间具有相同的字符串。在开发过程中,这些继承于其父资源文件的或同一数据库的资源文件,或者服务于同一对象的资源文件,出于方便识别的考虑,其名称通常具有很多相同的前缀、后缀,或夹杂着相同的字符串,因而需要将这些资源文件的名称或资源ID进行重命名。
因此,预设白名单中的资源文件名称和资源ID,可以包括一些具有预设前缀的资源文件名称、资源ID,或包括一些具有预设后缀的资源文件名称、资源ID,或包括一些具有预设字符串的资源文件名称、资源ID。在一些实施例中,预设白名单中的资源文件名称和资源ID可以包括设定类型资源文件的资源文件名称、资源ID,例如所有XML文件类型的资源文件名称。
将项目目录中的资源文件名称和资源ID根据预设的重命名规则分别生成字符串后,根据前后命名的映射关系生成映射文件。以上述的重命名规则1为例,映射文件中存储着资源文件和其对应的字符串之间的映射关系,例如a~资源文件1、b~资源文件2、……、aa~资源文件27、……、az~资源文件52、……等等。
步骤S200:将项目目录中资源文件夹中的资源文件名称、资源ID,以及代码文件夹中的资源文件名称、资源ID根据所述映射文件记载的映射关系进行重命名。
得到了映射文件后,根据映射文件中的资源文件名称或资源ID遍历资源文件夹中的资源文件和代码文件夹中的代码文件,对其文件名称和文件内容进行字符串正则匹配,再将资源文件名称或资源ID对应的字符串替换资源文件名称或资源ID。以上述的重命名规则1为例,将资源文件1的名称替换为a、将资源文件的名称替换为b、……、将资源文件27的名称替换为aa、……、将资源文件52的名称替换为az、……等等。
步骤S300:将重命名后的资源文件、代码文件以及项目目录中的其余安装文件(例如配置文件)打包生成应用程序的安装包。
可以调用安卓平台提供的软件开发工具包(SoftwareDevelopmentKit,SDK)中的打包工具aapt(AndroidAssetPackagingTool)进行打包,生成应用程序安装包(AndroidPackage,APK)。
在一些实施例中,为了方便管理,在有安全保障的情况下,在打包生成应用程序的安装包的步骤中,还可以将加密处理后的映射文件一起打包。也即在生成映射文件后,还可以进一步对映射文件进行加密处理。对映射文件的加密,可以是对称加密、非对称加密、MD5加密。
对称加密:
对称加密又称作私钥加密。常见的对称加密算法有:AES、DES;
非对称加密:
RSA加密算法是最常用的非对称加密算法。
MD5加密:
全称是Message-Digest Algorithm 5,可用于对一段信息进行不可逆的变换运算,产生一个32位的字符串。如果对输入信息作了任何形式的改变,对改变后的信息再次进行MD5运算所产生的数字摘要,与改变前的内容所运算出的MD5数字摘要都是不同的。MD5不是加密,因为结果是不能恢复出原始数据的。
MD5加密既不是对称加密算法,也不是非对称加密算法,因为它不可解密,只能通过匹配的方式间接解密,因此安全系数最高。
加密完成后,将加密处理后的映射文件、重命名后的资源文件、代码文件以及项目目录中的其余安装文件打包生成应用程序安装包。这样,开发人员得到任意一个安装包,可以随时随地对其进行后续分析和开发,而无需依靠存储在开发服务器一端的映射文件。
当然,出于安全角度的考虑,在其中一个实施例中,并不会将加密处理后的映射文件一起打包,而是将加密处理后的映射文件与应用程序的安装包建立映射关系(例如映射文件名称~包名+版本号)后存储,例如存储在开发服务器一端。
图2为一个实施例的对应用程序安装文件进行预处理的装置模块示意图。对应上述的对应用程序安装文件进行预处理的方法,本发明还提供一种对应用程序安装文件进行预处理的装置,包括:生成模块100、重命名模块200和打包模块300。
生成模块100用于将项目目录中的资源文件名称和资源ID根据预设的重命名规则分别生成字符串,并根据前后命名的映射关系生成映射文件;重命名模块200用于将项目目录中资源文件夹中和代码文件夹中的资源文件名称和资源ID根据所述映射文件记载的映射关系进行重命名;打包模块300用于将重命名后的资源文件、代码文件以及项目目录中的其余安装文件(例如配置文件)打包生成应用程序的安装包。
生成模块100将项目目录中的资源文件名称和资源ID根据预设的重命名规则分别生成字符串,并根据前后命名的映射关系生成映射文件。映射文件又称map文件,用于记录资源文件名称和资源ID重命名前后的名称的映射关系。
以安卓系统为例,安卓的项目目录中,主要包括代码文件、资源文件和配置文件等等,代码文件通常是Java文件,而资源文件通常包括XML文件、图片文件、音频文件、视频文件、动画文件这些文件,放置在res文件夹中。以下是项目目录的一个示例:
res目录下所有的资源文件都会在R.java文件下生成对应的资源ID,我们可以直接通过资源ID访问到对应的资源;这个R.java文件可以理解为字典,res下每个资源都都会在这里生成一个唯一的资源ID。
资源ID最终要编译成二进制格式的,例如在layout1.xml里面这样写<Buttonandroid:id="@+id/button1">,然后AAPT会生成R.java文件public static final intbutton1=0x7f05000b,接下来在生成*.apk的时候,像@+id/button1这样的资源ID会用“0x7f05000b”这样的数字代替。因此,可以见到,像@+id/button1和0x7f05000b这样的字符串的名称都很长。
以下对res文件夹中的资源文件做简单介绍:
1.图片资源:
drawable:存放各种位图文件及一些其他的drawable类型的XML文件
mipmap-hdpi:高分辨率
mipmap-mdpi:中等分辨率
mipmap-xhdpi:超高分辨率
mipmap-xxhdpi:超超高分辨率
2.布局资源:
layout:该目录下存放的是布局文件
3.菜单资源:
menu:菜单项相关的资源xml可在这里编写
4.values目录
demens.xml:定义尺寸资源
string.xml:定义字符串资源
styles.xml:定义样式资源
colors.xml:定义颜色资源
arrays.xml:定义数组资源
attrs.xml:自定义控件的属性
theme:主题文件
5.raw目录:
用于存放各种原生资源(音频,视频,一些XML文件等)
6.动画:
animator:存放属性动画的XML文件
anim:存放补间动画的XML文件
传统开发中,为了开发方便、容易识别,很多的资源文件和资源ID的名称都很长,调用这些资源文件和资源ID的时候,在代码中会占据比较多的字符。这种的资源文件和资源ID很多的话,会直接导致应用程序的安装包体积很大,而且运行时占用的内存也会很大。将项目目录中的这些资源文件名称和资源ID简化成简短的字符串,可以有效改善这种情况。因此,生成模块100可以将项目目录中的这些资源文件名称和资源ID根据预设的重命名规则分别生成字符串,并根据前后命名的映射关系生成映射文件。以下介绍一些生成字符串时所遵从的重命名规则。
考虑到字符串要简短,需要对重命名生成的字符串的长度进行限定,例如重命名生成的字符串长度少于预设阈值(例如字符串长度少于5),重命名规则应当以此作为基本原则。
重命名规则1:使用单个英文字母或多个英文字母的组合替换资源文件名称和/或资源ID。以资源文件名称为例,用a来替换资源文件1的名称,用b来替换资源文件2的名称,用c来替换资源文件3的名称,按字母顺序进行替换,用z来替换资源文件26的名称。接着从aa开始,用aa来替换资源文件27的名称……直至用到az替换资源文件52的名称。接着再从ba开始,用ba来替换资源文件53的名称……直至用到bz替换资源文件78的名称。接着再从ca开始……以此类推,按字母顺序进行替换,直到所有的资源文件名称都被替换完为止。其中,所述的资源文件1~资源文件78都表示资源文件名称相异的资源文件。
重命名规则2:使用英文字母和数字的组合替换资源文件名称和/或资源ID。以资源文件名称为例,用a1替换资源文件夹中资源文件1的名称,用a2替换资源文件夹中资源文件2的名称,用a3替换资源文件夹中资源文件3的名称……用a100替换资源文件夹中资源文件100的名称,以此类推,将b1~b100分别替换资源文件夹中资源文件101~资源文件100的名称,将c1~c100分别替换资源文件夹中资源文件201~资源文件300的名称……,即以字母+数字的形式以此进行替换,直到所有的资源文件名称都被替换完为止。其中,所述的资源文件1~资源文件300都表示资源文件名称相异的资源文件。
重命名规则3:根据资源文件名称和资源ID在项目目录中的出现顺序依次组合英文字母和/或数字替换资源文件名称和/或资源ID,即按照资源文件名称和资源ID在项目目录中的出现顺序来进行替换,以资源文件名称为例,例如上述的资源文件1~资源文件300在项目目录中的出现顺序为第1~第300,则可以按照上述重命名规则3进行替换。
在一些实施例中,资源文件名称和资源ID可以根据不同的重命名规则生成字符串,以方便开发者区别资源文件名称和资源ID。例如,使用单个英文字母或多个英文字母的组合替换资源文件名称,而使用英文字母和数字的组合替换资源ID,在此不做限定。
在一些实施例中,生成模块100可以将项目目录中没有处于预设白名单中的资源文件名称和资源ID根据预设的重命名规则分别生成字符串。可以预设一个白名单,在生成字符串时忽略白名单中的资源文件名称和资源ID,即白名单中存在的资源文件名称和资源ID则不进行重命名,这是为了保护从第三方库引用进来的资源,确保能够正常引用。
资源文件的名称或资源ID,通常很多具有相同的前缀、后缀,例如某些子资源文件是继承于其父资源文件的或同一数据库的,此时它们的名称之间通常具有相同的前缀或后缀。又或者,某一类资源文件或资源ID之间可能由于是服务于同一对象,所以这些资源文件的名称或资源ID之间具有相同的字符串。在开发过程中,这些继承于其父资源文件的或同一数据库的资源文件,或者服务于同一对象的资源文件,出于方便识别的考虑,其名称通常具有很多相同的前缀、后缀,或夹杂着相同的字符串,因而需要将这些资源文件的名称或资源ID进行重命名。
因此,预设白名单中的资源文件名称和资源ID,可以包括一些具有预设前缀的资源文件名称、资源ID,或包括一些具有预设后缀的资源文件名称、资源ID,或包括一些具有预设字符串的资源文件名称、资源ID。在一些实施例中,预设白名单中的资源文件名称和资源ID可以包括设定类型资源文件的资源文件名称、资源ID,例如所有XML文件类型的资源文件名称。
生成模块100将项目目录中的资源文件名称和资源ID根据预设的重命名规则分别生成字符串后,根据前后命名的映射关系生成映射文件。以上述的重命名规则1为例,映射文件中存储着资源文件和其对应的字符串之间的映射关系,例如a~资源文件1、b~资源文件2、……、aa~资源文件27、……、az~资源文件52、……等等。
重命名模块200将项目目录中资源文件夹中的资源文件名称、资源ID,以及代码文件夹中的资源文件名称、资源ID根据所述映射文件记载的映射关系进行重命名。
得到了映射文件后,重命名模块200根据映射文件中的资源文件名称或资源ID遍历资源文件夹中的资源文件和代码文件夹中的代码文件,对其文件名称和文件内容进行字符串正则匹配,再将资源文件名称或资源ID对应的字符串替换资源文件名称或资源ID。以上述的重命名规则1为例,将资源文件1的名称替换为a、将资源文件的名称替换为b、……、将资源文件27的名称替换为aa、……、将资源文件52的名称替换为az、……等等。
打包模块300将重命名后的资源文件、代码文件以及项目目录中的其余安装文件打包生成应用程序的安装包。
打包模块300可以调用安卓平台提供的软件开发工具包(SDK)中的打包工具aapt(AndroidAssetPackagingTool)进行打包,生成应用程序安装包(AndroidPackage,APK)。
在一些实施例中,为了方便管理,在有安全保障的情况下,打包模块300还可以将加密处理后的映射文件一起打包,所述装置还可以包括有加密模块。在生成映射文件后,加密模块还可以进一步对映射文件进行加密处理。对映射文件的加密,可以是对称加密、非对称加密、MD5加密。
对称加密:
对称加密又称作私钥加密。常见的对称加密算法有:AES、DES;
非对称加密:
RSA加密算法是最常用的非对称加密算法。
MD5加密:
全称是Message-Digest Algorithm 5,可用于对一段信息进行不可逆的变换运算,产生一个32位的字符串。如果对输入信息作了任何形式的改变,对改变后的信息再次进行MD5运算所产生的数字摘要,与改变前的内容所运算出的MD5数字摘要都是不同的。MD5不是加密,因为结果是不能恢复出原始数据的。
MD5加密既不是对称加密算法,也不是非对称加密算法,因为它不可解密,只能通过匹配的方式间接解密,因此安全系数最高。
加密模块加密完成后,打包模块300将加密处理后的映射文件、重命名后的资源文件、代码文件以及项目目录中的其余安装文件打包生成应用程序安装包。这样,开发人员得到任意一个安装包,可以随时随地对其进行后续分析和开发,而无需依靠存储在开发服务器一端的映射文件。
当然,出于安全角度的考虑,在其中一个实施例中,所述装置包括加密存储模块,打包模块300并不会将加密处理后的映射文件一起打包,而是加密存储模块将加密处理后的映射文件与应用程序的安装包建立映射关系(例如映射文件名称~包名+版本号)后存储,例如存储在开发服务器一端。
本发明还提供一种服务器,其包括:一个或多个处理器;存储器,存储有程序代码,当所述程序代码由所述一个或多个处理器运行时,所述服务器执行根据上述任一项实施例所述的对应用程序安装文件进行预处理的方法。
上述的对应用程序安装文件进行预处理的方法、装置和服务器,将项目目录中的资源文件名称和资源ID根据预设的重命名规则分别生成字符串,并根据前后命名的映射关系生成映射文件;将项目目录中资源文件夹中和代码文件夹中的资源文件名称和资源ID根据所述映射文件记载的映射关系进行重命名;将重命名后的资源文件、代码文件以及项目目录中的其余安装文件打包生成应用程序的安装包。通过对长度较长的资源文件名称和资源ID根据重命名规则分别生成长度较短的字符串,降低信息的字节数,可以有效减少安装包的体积。并且提高了应用程序安装包被第三方逆向破解的难度,提高了安装包的安全性。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
以上所述仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种对应用程序安装文件进行预处理的方法,其特征在于,包括如下步骤:
将项目目录中的资源文件名称和资源ID根据预设的重命名规则分别生成字符串,并根据前后命名的映射关系生成映射文件;
将项目目录中资源文件夹中的资源文件名称、资源ID,以及代码文件夹中的资源文件名称、资源ID根据所述映射文件记载的映射关系进行重命名;
将重命名后的资源文件、代码文件以及项目目录中的其余安装文件打包生成应用程序的安装包。
2.根据权利要求1所述的对应用程序安装文件进行预处理的方法,其特征在于,将项目目录中没有处于预设白名单中的资源文件名称和资源ID根据预设的重命名规则分别生成字符串。
3.根据权利要求2所述的对应用程序安装文件进行预处理的方法,其特征在于,所述预设白名单中包括:
具有预设前缀的资源文件名称、资源ID;或
具有预设后缀的资源文件名称、资源ID;或
具有预设字符串的资源文件名称、资源ID。
4.根据权利要求2所述的对应用程序安装文件进行预处理的方法,其特征在于,所述预设白名单中包括:
设定类型资源文件的资源文件名称、资源ID。
5.根据权利要求1或2所述的对应用程序安装文件进行预处理的方法,其特征在于,所述重命名规则包括:
使用单个英文字母或多个英文字母的组合替换资源文件名称和/或资源ID。
6.根据权利要求1或2所述的对应用程序安装文件进行预处理的方法,其特征在于,所述重命名规则包括:
使用英文字母和数字的组合替换资源文件名称和/或资源ID。
7.根据权利要求1或2所述的对应用程序安装文件进行预处理的方法,其特征在于,所述重命名规则包括:
根据资源文件名称和资源ID在项目目录中的出现顺序依次组合英文字母和/或数字替换资源文件名称和/或资源ID。
8.根据权利要求1或2所述的对应用程序安装文件进行预处理的方法,其特征在于,所述重命名规则包括:
重命名生成的字符串长度少于预设阈值。
9.一种对应用程序安装文件进行预处理的装置,其特征在于,包括:
生成模块,用于将项目目录中的资源文件名称和资源ID根据预设的重命名规则分别生成字符串,并根据前后命名的映射关系生成映射文件;
重命名模块,用于将项目目录中资源文件夹中的资源文件名称、资源ID,以及代码文件夹中的资源文件名称、资源ID根据所述映射文件记载的映射关系进行重命名;
打包模块,用于将重命名后的资源文件、代码文件以及项目目录中的其余安装文件打包生成应用程序的安装包。
10.一种服务器,其特征在于,其包括:
一个或多个处理器;
存储器,存储有程序代码,当所述程序代码由所述一个或多个处理器运行时,所述服务器执行根据权利要求1~8任一项所述的对应用程序安装文件进行预处理的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711464044.XA CN108089880A (zh) | 2017-12-28 | 2017-12-28 | 对应用程序安装文件进行预处理的方法、装置和服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711464044.XA CN108089880A (zh) | 2017-12-28 | 2017-12-28 | 对应用程序安装文件进行预处理的方法、装置和服务器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108089880A true CN108089880A (zh) | 2018-05-29 |
Family
ID=62180960
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711464044.XA Pending CN108089880A (zh) | 2017-12-28 | 2017-12-28 | 对应用程序安装文件进行预处理的方法、装置和服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108089880A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109522020A (zh) * | 2018-09-29 | 2019-03-26 | 中国平安人寿保险股份有限公司 | 安卓系统安装包瘦身方法、装置、终端及存储介质 |
CN111008178A (zh) * | 2019-11-05 | 2020-04-14 | 北京字节跳动网络技术有限公司 | 数据处理方法、装置、电子设备及计算机可读存储介质 |
CN111143789A (zh) * | 2019-12-05 | 2020-05-12 | 深圳市任子行科技开发有限公司 | 一种apk资源文件的混淆方法和装置 |
CN111984241A (zh) * | 2020-07-08 | 2020-11-24 | 福建亿能达信息技术股份有限公司 | 一种在线编码动态生效的方法、装置、设备和介质 |
CN111984300A (zh) * | 2020-09-08 | 2020-11-24 | 网易(杭州)网络有限公司 | 代码复制方法及装置、电子设备和计算机可读存储介质 |
CN112052464A (zh) * | 2020-08-21 | 2020-12-08 | 北京智游网安科技有限公司 | 对资源文件进行虚拟化保护的方法、智能终端、存储介质 |
CN112148597A (zh) * | 2020-09-16 | 2020-12-29 | 北京基调网络股份有限公司 | 一种消除iOS设备授权对话框的方法、测试方法及存储介质 |
CN113076084A (zh) * | 2021-03-30 | 2021-07-06 | 网易(杭州)网络有限公司 | 资源文件处理方法、装置、设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104063208A (zh) * | 2013-03-21 | 2014-09-24 | 北京百度网讯科技有限公司 | 代码文件的优化方法、系统和服务器 |
CN105204823A (zh) * | 2014-05-29 | 2015-12-30 | 腾讯科技(深圳)有限公司 | 生成应用程序安装包的方法及装置 |
CN105468987A (zh) * | 2014-08-15 | 2016-04-06 | 中兴通讯股份有限公司 | 一种数据处理方法及装置 |
CN106708571A (zh) * | 2016-12-13 | 2017-05-24 | 北京奇虎科技有限公司 | 资源文件的加载方法、装置和加固资源文件的方法、装置 |
CN107329957A (zh) * | 2017-05-18 | 2017-11-07 | 网易(杭州)网络有限公司 | 替换代码中文字符串的方法以及计算机可读存储介质 |
-
2017
- 2017-12-28 CN CN201711464044.XA patent/CN108089880A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104063208A (zh) * | 2013-03-21 | 2014-09-24 | 北京百度网讯科技有限公司 | 代码文件的优化方法、系统和服务器 |
CN105204823A (zh) * | 2014-05-29 | 2015-12-30 | 腾讯科技(深圳)有限公司 | 生成应用程序安装包的方法及装置 |
CN105468987A (zh) * | 2014-08-15 | 2016-04-06 | 中兴通讯股份有限公司 | 一种数据处理方法及装置 |
CN106708571A (zh) * | 2016-12-13 | 2017-05-24 | 北京奇虎科技有限公司 | 资源文件的加载方法、装置和加固资源文件的方法、装置 |
CN107329957A (zh) * | 2017-05-18 | 2017-11-07 | 网易(杭州)网络有限公司 | 替换代码中文字符串的方法以及计算机可读存储介质 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109522020A (zh) * | 2018-09-29 | 2019-03-26 | 中国平安人寿保险股份有限公司 | 安卓系统安装包瘦身方法、装置、终端及存储介质 |
CN111008178A (zh) * | 2019-11-05 | 2020-04-14 | 北京字节跳动网络技术有限公司 | 数据处理方法、装置、电子设备及计算机可读存储介质 |
CN111008178B (zh) * | 2019-11-05 | 2024-04-30 | 北京字节跳动网络技术有限公司 | 数据处理方法、装置、电子设备及计算机可读存储介质 |
CN111143789A (zh) * | 2019-12-05 | 2020-05-12 | 深圳市任子行科技开发有限公司 | 一种apk资源文件的混淆方法和装置 |
CN111984241A (zh) * | 2020-07-08 | 2020-11-24 | 福建亿能达信息技术股份有限公司 | 一种在线编码动态生效的方法、装置、设备和介质 |
CN112052464A (zh) * | 2020-08-21 | 2020-12-08 | 北京智游网安科技有限公司 | 对资源文件进行虚拟化保护的方法、智能终端、存储介质 |
CN112052464B (zh) * | 2020-08-21 | 2024-03-22 | 北京智游网安科技有限公司 | 对资源文件进行虚拟化保护的方法、智能终端、存储介质 |
CN111984300A (zh) * | 2020-09-08 | 2020-11-24 | 网易(杭州)网络有限公司 | 代码复制方法及装置、电子设备和计算机可读存储介质 |
CN111984300B (zh) * | 2020-09-08 | 2024-01-23 | 网易(杭州)网络有限公司 | 代码复制方法及装置、电子设备和计算机可读存储介质 |
CN112148597A (zh) * | 2020-09-16 | 2020-12-29 | 北京基调网络股份有限公司 | 一种消除iOS设备授权对话框的方法、测试方法及存储介质 |
CN113076084A (zh) * | 2021-03-30 | 2021-07-06 | 网易(杭州)网络有限公司 | 资源文件处理方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108089880A (zh) | 对应用程序安装文件进行预处理的方法、装置和服务器 | |
Zimmermann | The official PGP user's guide | |
CA2716982C (en) | Digital signatures on composite resource documents | |
KR100753932B1 (ko) | 컨텐츠 암호화 방법, 이를 이용한 네트워크를 통한 컨텐츠제공 시스템 및 그 방법 | |
US6205549B1 (en) | Encapsulation of public key cryptography standard number 7 into a secured document | |
JP4290565B2 (ja) | アイテムに対応する権利表現を作成するための方法及びシステム | |
CN101790865B (zh) | 更新密码密钥数据 | |
US8345876B1 (en) | Encryption/decryption system and method | |
Naqvi et al. | Multilayer partially homomorphic encryption text steganography (MLPHE-TS): a zero steganography approach | |
US20230012182A1 (en) | System and method for generating a cryptographic key | |
CA2452419A1 (en) | Method for an integrated protection system of data distributed processing in computer networks and system for carrying out said method | |
US7487354B2 (en) | Methods and systems for using digital signatures in uniform resource locators | |
US11716191B2 (en) | Method, apparatus, and computer-readable medium for searching polymorphically encrypted data | |
CN1941691B (zh) | 生成用于检测在处理期间加密数据的虚假改造的数据的设备及方法 | |
CN107302706A (zh) | 图像防盗链方法、装置及电子设备 | |
CN110414249A (zh) | 信息处理方法、装置、存储介质及电子设备 | |
CN104601548A (zh) | 一种加密文件的生成方法、装置和计算设备 | |
CN108777685A (zh) | 用于处理信息的方法和装置 | |
JP2009110061A (ja) | 版数管理システムおよび版数管理方法 | |
KR20030022484A (ko) | 멀티미디어 데이터의 암호화 방법 | |
Carpentieri et al. | Data hiding using compressed archives | |
JP2008113248A (ja) | コンテンツ送信装置、コンテンツ受信装置、コンテンツ送信方法及びコンテンツ送信プログラム | |
Wu et al. | Securing graph steganography over social networks via interaction remapping | |
Vasilakis et al. | Copyright Protection on Electronic Books: Study and Design of a New Approach | |
CN113360859B (zh) | 基于Python解释器的加密文件安全控制方法和装置 |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180529 |