一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种对小程序的加固、小程序运行方法及装置与流程

2022-03-02 03:07:44 来源:中国专利 TAG:


1.本说明书涉及数据安全技术领域,尤其涉及一种对小程序的加固、小程序运行方法及装置。


背景技术:

2.小程序是一种不需要用户主动下载安装,即可依托于宿主应用进行使用的应用。目前,小程序用户量不断增长,吸引了大批的移动应用厂商将其原生应用业务功能迁移到小程序中。
3.然而,目前多数小程序的代码是以明文的形式存在的,而以明文的形式存在的代码,存在被破解、核心代码逻辑被盗的问题,例如攻击者可仿造合法应用用于欺诈用户,甚至可以从小程序逻辑中找到攻击小程序的目标服务的入口。为了保护小程序代码的安全并且保护小程序用户的隐私安全,对于小程序的加固是具有重要意义的。


技术实现要素:

4.本说明书一个或多个实施例提供了一种对小程序的加固、小程序运行方法及装置,以实现对小程序的加固,从而保护小程序代码本身的安全以及小程序用户的隐私安全。
5.根据第一方面,提供一种对小程序的加固方法,应用于服务器,所述方法包括:
6.从小程序的原始程序文件中,确定出待加固的若干目标对象各自的真实对象标识和对象实体;
7.针对各目标对象生成对应的伪对象标识;
8.基于各目标对象的真实对象标识和对象实体,以及为其生成的伪对象标识,生成目标文件;
9.对所述目标文件进行加密,得到目标文件密文;
10.将所述原始程序文件中各目标对象的对象实体移除,并将其中的真实对象标识替换成所述伪对象标识,得到中间文件;
11.基于所述目标文件密文以及所述中间文件,确定小程序加固文件。
12.在一种可实施方式中,所述确定出待加固的若干目标对象各自的真实对象标识和对象实体,包括:
13.基于加固对象列表,从所述原始程序文件中,确定出所述若干目标对象的真实对象标识和对象实体,其中,所述加固对象列表包括各待加固的对象的真实对象标识。
14.在一种可实施方式中,所述若干目标对象包括若干目标函数;
15.所述确定出所述若干目标对象的真实对象标识和对象实体,包括:
16.针对所述原始程序文件,构建对应的语法树,其中,所述语法树的各节点对应所述小程序所包含的各函数;
17.在遍历所述语法树过程中,基于所述加固对象列表,确定当前节点所对应的当前函数是否属于所述若干目标函数;
18.若属于,从所述原始程序文件中,确定出该当前函数的真实函数名和函数实现体。
19.在一种可实施方式中,所述对所述目标文件进行加密,包括:
20.生成随机密钥,利用所述随机密钥对所述目标文件进行加密;
21.所述确定小程序加固文件,包括:
22.基于所述目标文件密文、所述中间文件以及所述随机密钥,确定小程序加固文件。
23.在一种可实施方式中,所述确定小程序加固文件,包括:
24.从所述中间文件中确定出第一文件;
25.基于预设的隐写算法,将所述随机密钥添加于所述第一文件中,得到密钥隐藏文件;
26.将所述中间文件中的所述第一文件替换成所述密钥隐藏文件,得到更新后的中间文件;
27.基于所述目标文件密文以及更新后的中间文件,确定小程序加固文件。
28.在一种可实施方式中,所述第一文件为图片文件,所述隐写算法为数字水印算法。
29.在一种可实施方式中,所述小程序依赖宿主应用运行;
30.所述对所述目标文件进行加密,包括:
31.利用与所述宿主应用的客户端预先协商的加密密钥,对所述目标文件进行加密。
32.在一种可实施方式中,所述待加固的若干目标对象包括如下之一:待加固的函数,待加固的文件以及待加固的资源数据。
33.在一种可实施方式中,所述生成目标文件,包括:
34.按照指定格式,将各目标对象的真实对象标识和对象实体及其对应的伪对象标识,添加至预设文件中,得到目标文件。
35.根据第二方面,提供一种小程序运行方法,应用于终端,所述方法包括:
36.获得小程序加固文件,其中,所述小程序加固文件包括:目标文件密文以及中间文件,所述目标文件密文是对目标文件进行加密生成的;所述目标文件包括,若干目标对象的对象实体和真实对象标识及其对应的伪对象标识;所述中间文件是,小程序的原始程序文件中待加固的各目标对象的对象实体被移除、且真实对象标识被其对应的伪对象标识替换后生成的;
37.对所述目标文件密文进行解密,得到目标文件明文;
38.基于所述目标文件明文,运行所述中间文件。
39.在一种可实施方式中,各目标对象是,基于加固对象列表从所述原始程序文件中确定的对象,所述加固对象列表包括所述待加固的对象的真实对象标识。
40.在一种可实施方式中,所述小程序依赖宿主应用运行,所述宿主应用的客户端部署于所述终端设备;所述目标文件密文是,利用所述客户端与服务器预先协商的加密密钥,对所述目标文件进行加密所得的,所述服务器为生成所述小程序加固文件的服务器;
41.所述得到目标文件明文,包括:
42.利用所述客户端预存的所述加密密钥对应的解密密钥,对所述目标文件密文进行解密,得到目标文件明文。
43.在一种可实施方式中,所述小程序加固文件还包括随机密钥;
44.所述得到目标文件明文,包括:
45.利用所述随机密钥,对所述目标文件密文进行解密,得到目标文件明文。
46.在一种可实施方式中,所述随机密钥被添加于所述中间文件的密钥隐藏文件中,所述密钥隐藏文件是,利用预设的隐写算法将所述随机密钥添加至所述中间文件的第一文件生成的;
47.在所述得到目标文件明文之前,还包括:
48.利用所述隐写算法对应的提取算法,从所述密钥隐藏文件中提取所述随机密钥。
49.在一种可实施方式中,所述第一文件为图片文件,所述提取算法为数字水印提取算法。
50.根据第三方面,提供一种对小程序的加固装置,应用于服务器,所述装置包括:
51.第一确定模块,配置为从小程序的原始程序文件中,确定出待加固的若干目标对象各自的真实对象标识和对象实体;
52.第一生成模块,配置为针对各目标对象生成对应的伪对象标识;
53.第二生成模块,配置为基于各目标对象的真实对象标识和对象实体,以及为其生成的伪对象标识,生成目标文件;
54.加密模块,配置为对所述目标文件进行加密,得到目标文件密文;
55.移除替换模块,配置为将所述原始程序文件中各目标对象的对象实体移除,并将其中的真实对象标识替换成所述伪对象标识,得到中间文件;
56.第二确定模块,配置为基于所述目标文件密文以及所述中间文件,确定小程序加固文件。
57.在一种可实施方式中,第一确定模块,具体配置为基于加固对象列表,从所述原始程序文件中,确定出所述若干目标对象的真实对象标识和对象实体,其中,所述加固对象列表包括各待加固的对象的真实对象标识。
58.在一种可实施方式中,所述若干目标对象包括若干目标函数;
59.所述第一确定模块,具体配置为针对所述原始程序文件,构建对应的语法树,其中,所述语法树的各节点对应所述小程序所包含的各函数;
60.在遍历所述语法树过程中,基于所述加固对象列表,确定当前节点所对应的当前函数是否属于所述若干目标函数;
61.若属于,从所述原始程序文件中,确定出该当前函数的真实函数名和函数实现体。
62.在一种可实施方式中,所述加密模块,具体配置为生成随机密钥,利用所述随机密钥对所述目标文件进行加密;
63.所述第二确定模块,具体配置为基于所述目标文件密文、所述中间文件以及所述随机密钥,确定小程序加固文件。
64.在一种可实施方式中,所述第二确定模块,具体配置为从所述中间文件中确定出第一文件;
65.基于预设的隐写算法,将所述随机密钥添加于所述第一文件中,得到密钥隐藏文件;
66.将所述中间文件中的所述第一文件替换成所述密钥隐藏文件,得到更新后的中间文件;
67.基于所述目标文件密文以及更新后的中间文件,确定小程序加固文件。
68.在一种可实施方式中,所述第一文件为图片文件,所述隐写算法为数字水印算法。
69.在一种可实施方式中,所述小程序依赖宿主应用运行;
70.所述加密模块,具体配置为利用与所述宿主应用的客户端预先协商的加密密钥,对所述目标文件进行加密。
71.在一种可实施方式中,所述待加固的若干目标对象包括如下之一:待加固的函数,待加固的文件以及待加固的资源数据。
72.在一种可实施方式中,所述第二生成模块,具体配置为按照指定格式,将各目标对象的真实对象标识和对象实体及其对应的伪对象标识,添加至预设文件中,得到目标文件。
73.根据第四方面,提供一种小程序运行装置,应用于终端设备,所述装置包括:
74.第一获得模块,配置为获得小程序加固文件,其中,所述小程序加固文件包括:目标文件密文以及中间文件,所述目标文件密文是对目标文件进行加密生成的;所述目标文件包括,若干目标对象的对象实体和真实对象标识及其对应的伪对象标识;所述中间文件是,小程序的原始程序文件中待加固的各目标对象的对象实体被移除、且真实对象标识被其对应的伪对象标识替换后生成的;
75.第一解密模块,配置为对所述目标文件密文进行解密,得到目标文件明文;
76.第一运行模块,配置为基于所述目标文件明文,运行所述中间文件。
77.在一种可实施方式中,各目标对象是,基于加固对象列表从所述原始程序文件中确定的对象,所述加固对象列表包括所述待加固的对象的真实对象标识。
78.在一种可实施方式中,所述小程序依赖宿主应用运行,所述宿主应用的客户端部署于所述终端设备;所述目标文件密文是,利用所述客户端与服务器预先协商的加密密钥,对所述目标文件进行加密所得的,所述服务器为生成所述小程序加固文件的服务器;
79.所述第一解密模块,具体配置为利用所述客户端预存的所述加密密钥对应的解密密钥,对所述目标文件密文进行解密,得到目标文件明文。
80.在一种可实施方式中,所述小程序加固文件还包括随机密钥;
81.所述第一解密模块,具体配置为利用所述随机密钥,对所述目标文件密文进行解密,得到目标文件明文。
82.在一种可实施方式中,所述随机密钥被添加于所述中间文件的密钥隐藏文件中,所述密钥隐藏文件是,利用预设的隐写算法将所述随机密钥添加至所述中间文件的第一文件生成的;
83.所述装置还包括:
84.提取模块,配置为在所述得到目标文件明文之前,利用所述隐写算法对应的提取算法,从所述密钥隐藏文件中提取所述随机密钥。
85.在一种可实施方式中,所述第一文件为图片文件,所述提取算法为数字水印提取算法。
86.根据第五方面,提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行第一方面所述的方法。
87.根据第六方面,提供一种计算设备,包括存储器和处理器,其中,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第一方面所述的方法。
88.根据第七方面,提供一种计算机可读存储介质,其上存储有计算机程序,当所述计
算机程序在计算机中执行时,令计算机执行第二方面所述的方法。
89.根据第八方面,提供一种计算设备,包括存储器和处理器,其中,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第二方面所述的方法。
90.根据本说明书实施例提供的方法及装置,从小程序的原始程序文件中,确定出的待加固的若干目标对象各自的真实对象标识和对象实体,并生成对应的伪对象标识;基于各目标对象的真实对象标识和对象实体,以及为其生成的伪对象标识,生成目标文件,并对其加密,得到目标文件密文,将原始程序文件中各目标对象的对象实体移除,并将其中的真实对象标识替换成伪对象标识,得到中间文件,利用目标文件密文以及中间文件确定小程序加固文件。这样,将小程序的原始程序文件中的若干目标对象(包括真实对象标识和对象实体)加密,避免其直接以明文的形式存在,使得攻击者无法获知全部的原始程序文件,实现对小程序的加固,从而保护小程序代码本身的安全以及小程序用户的隐私安全。
附图说明
91.为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
92.图1a和图1b分别为本说明书披露的一个实施例的实施框架示意图;
93.图2为实施例提供的对小程序的加固方法的一种流程示意图;
94.图3为实施例提供的小程序运行方法的一种流程示意图;
95.图4为实施例提供的对小程序的加固装置的一种示意性框图;
96.图5为实施例提供的小程序运行装置的一种示意性框图。
具体实施方式
97.下面将结合附图,详细描述本说明书实施例的技术方案。
98.本说明书实施例披露一种对小程序的加固、小程序运行方法及装置,下面首先介绍对小程序的加固方法的应用场景和技术构思,具体如下:
99.目前多数小程序的代码是以明文的形式存在的,而以明文的形式存在的代码,存在被破解、核心代码逻辑被盗的问题,例如攻击者可仿造合法应用用于欺诈用户,甚至可以从小程序逻辑中找到攻击小程序的目标服务的入口。为了保护小程序代码的安全并且保护小程序用户的隐私安全,对于小程序的加固是具有重要意义的。
100.鉴于此,发明人提出一种对小程序的加固方法,图1a示出根据本说明书披露的一个实施例的实施框架示意图。其中,服务器可以预先安装小程序编译器,以通过该小程序编译器实现对小程序的加固。具体的,如图1a所示,服务器可以首先获得待加固的小程序的原始程序文件,其中,该原始程序文件可以为:小程序的源代码文件,也可以是小程序的编译后的程序文件。服务器通过小程序编译器,从原始程序文件中,确定出待加固的若干目标对象,并确定出该若干目标对象各自的对象标识和对象实体,其中,为了便于区分,将原始程序文件中的目标对象的对象标识称为真实对象标识。然后,针对各目标对象生成对应的伪对象标识,并基于各目标对象的真实对象标识和对象实体,以及为其生成的伪对象标识,生
成目标文件;对目标文件进行加密,得到目标文件密文;将原始程序文件中各目标对象的对象实体移除,并将其中的真实对象标识替换成对应的伪对象标识,得到中间文件;进而,基于目标文件密文以及中间文件,确定小程序加固文件,实现对小程序的加固。
101.一种实现中,上述目标对象可以包括但不限于:原始程序文件中的待加固的函数,待加固的文件以及待加固的资源数据。目标对象为待加固的函数的情况下,其对应的真实对象标识为函数名,对象实体为函数实现体。目标对象为待加固的文件的情况下,其对应的真实对象标识为文件名,对象实体为文件内所存储的真实文件内容。目标对象为待加固的资源数据的情况下,其对应的真实对象标识为资源数据对应的数据标识,对象实体为真实的资源数据本身。
102.本实施例中,将小程序的原始程序文件中的若干目标对象(包括真实对象标识和对象实体)加密,避免其直接以明文的形式存在,使得攻击者无法获知全部的原始程序文件,进而无法还原完整的小程序的原始程序文件,实现对小程序的加固,从而保护小程序代码本身的安全以及小程序用户的隐私安全。
103.下面对小程序运行方法进行介绍。
104.图1b示出根据本说明书披露的一个实施例的实施框架示意图。如图1b所示,服务器基于上述对小程序的加固方法,对小程序(例如小程序a)进行加固,得到小程序a的小程序加固文件之后,可以对小程序加固文件进行打包,得到小程序a的小程序加固文件包,并将该小程序a的小程序加固文件包发布至线上。后续的,用户需要基于宿主应用使用该小程序a时,例如:用户基于宿主应用打开小程序a时,宿主应用的客户端所在终端设备可以从线上拉取该小程序a的小程序加固文件包,解包小程序加固文件包,得到小程序加固文件;进而,对小程序加固文件中的目标文件密文进行解密,得到目标文件明文;基于目标文件明文,运行小程序加固文件中的中间文件,并相应的,在终端设备的显示器输出小程序的运行界面,以此实现对小程序a的运行。
105.一种实现中,宿主应用的客户端所在终端设备可以安装有小程序解析器,以通过该小程序解析器运行该小程序加固文件。一种情况中,该小程序解析器可以以宿主应用的客户端的插件形式存在,也可以以独立客户端软件的形式存在,在宿主应用的客户端需要运行小程序的小程序加固文件时,可以触发该小程序解析器,以通过该小程序解析器对小程序加固文件进行解析运行。
106.下面结合具体实施例,对本说明书提供的对小程序的加固方法以及小程序运行方法进行详细阐述。
107.图2示出了本说明书一个实施例中对小程序的加固方法的流程图。该方法可以通过服务器实现,其中,该服务器可以通过任何具有计算、处理能力的装置、设备、平台、设备集群等来实现。如前所述,该服务器可以安装有小程序编译器,以通过小程序编译器实现对小程序的加固。或者,服务器也可以通过其他处理工具,执行对小程序的加固方法。该对小程序的加固方法包括如下步骤s210-s260:
108.s210:从小程序的原始程序文件中,确定出待加固的若干目标对象各自的真实对象标识和对象实体。
109.服务器可以首先获得待加固的小程序的原始程序文件,其中,该原始程序文件可以是小程序开发者手动上传的,也可以是服务器基于小程序开发者输入的小程序存储地
址,从存储地址对应的存储空间读取的。该原始程序文件可以为:小程序的源代码文件,也可以是小程序的编译后的程序文件。原始程序文件可以包括但不限于:存储有小程序的代码的文件、存储有小程序运行所需的资源数据的文件,以及存储有小程序的相关图片的文件。
110.后续的,服务器从原始程序文件中,确定出待加固的若干目标对象,进而确定出若干目标对象各自的真实对象标识和对象实体。其中,目标对象可以包括但不限于:原始程序文件中的待加固的函数,待加固的文件以及待加固的资源数据。
111.一种实现中,上述s210可以被设置为:基于小程序开发者的手动选择操作,从原始程序文件中,确定出待加固的若干目标对象。例如:原始程序文件包括对象1-5,小程序开发者手动选择其中的对象1、3和5,相应的,服务器将原始程序文件中的对象1、3和5,确定为待加固的目标对象,并进一步的从原始程序文件中确定出对象1、3和5各自对应的真实对象标识和对象实体。
112.在一种情况中,服务器可以提供有供小程序开发者针对其待加固的小程序,设置加固对象列表的设置界面,小程序开发者可以基于该设置界面,从小程序的原始程序文件中,选择出待加固的若干目标对象。
113.在另一种情况中,小程序开发者在存在对所开发的小程序(例如小程序a)进行加固的需求时,可以在通过小程序开发工具ide开发完成小程序之后,通过小程序开发工具ide针对该开发完成小程序启动加固选项,并在小程序开发工具ide针对该开发完成小程序提供的项目目录中,针对小程序勾选所需加固的对象的真实对象标识,其中项目目录展示有小程序的原始程序文件中的各文件的文件标识、文件中所存储的资源数据的数据标识以及文件中所存储的代码中各函数的函数名等。
114.小程序开发者基于小程序开发工具ide勾选完成小程序所需加固的对象的真实对象标识之后,可以点击编译按键,相应的,小程序开发工具ide针对小程序生成对应的加固对象列表,并将加固对象列表以及小程序的原始程序文件,通过安全通道,发送至服务器,其中,加固对象列表中包括小程序开发者勾选的所需加固的对象的真实对象标识。一种实现中,小程序开发工具ide可以将原始程序文件压缩后,发送至服务器。
115.相应的,上述s210,可以被设置为:基于加固对象列表,从原始程序文件中,确定出若干目标对象的真实对象标识和对象实体。其中,加固对象列表包括各待加固的对象的真实对象标识。本实现方式中,服务器在获得该加固对象列表之后,基于加固对象列表,从原始程序文件中,确定出若干目标对象,并进一步的从原始程序文件中确定各目标对象的真实对象标识和对象实体。
116.在又一种情况中,服务器中部署有特定的加固对象选择算法,根据该选择算法从原始程序文件中选择一些待加固对象。上述选择算法例如可以包括,随机选择,按照一定策略进行选择等。上述策略例如可以包括,选择开发者自定义的对象(例如函数),选择被调用次数在一定范围的对象,等等。在这样的情况下,小程序开发者在确定需要对小程序进行加固后,不需指定加固对象,由服务器根据上述选择算法,确定出目标对象。
117.一种实现中,上述服务器可以为小程序开放平台服务器,或者可以为小程序运行所需的宿主应用的服务器。在一种实现中,该服务器还可以提供上线发布小程序的功能。
118.s220:针对各目标对象生成对应的伪对象标识。其中,一种实现中,服务器可以针
对各目标对象,基于预设标识随机生成算法,随机生成对应的伪对象标识。另一种实现中,为了使得所生成的伪对象标识更具有迷惑性,进而在一定程度上提高对小程序保护力度,服务器可以预存有伪对象标识列表,该伪对象标识列表中可以包括有多个具有真实意义的对象标识,例如:handle_stream。服务器可以从该伪对象标识列表中随机选择对象标识,作为某一目标对象生成对应的伪对象标识。可以理解的,目标对象对应的真实对象标识与为其生成的伪对象标识二者不同,且存在一对一的对应关系。
119.s230:基于各目标对象的真实对象标识和对象实体,以及为其生成的伪对象标识,生成目标文件。本步骤中,服务器可以将各目标对象的真实对象标识和对象实体,以及为其生成的伪对象标识,存储于预设文件中,并记录真实对象标识和对象实体以及伪对象标识之间的对应关系,以生成目标文件。一种情况中,该预设文件为空白文件,为guard.js格式文件,相应的,目标文件为guard.js格式文件。
120.在本说明书的一种实现方式中,所述s230,可以包括如下步骤:按照指定格式,将各目标对象的真实对象标识和对象实体及其对应的伪对象标识,添加至预设文件中,得到目标文件。该指定格式可以标识出真实对象标识和对象实体以及伪对象标识之间的对应关系。举例而言:目标文件的内容可以表示如下:
121.randomname1(){
122.//func1代码实现
123.}
124.randomname2(){
125.//func2代码实现
126.}
127.其中,randomname1表示目标对象1对应的伪对象标识,func1表示目标对象1的真实对象标识,代码实现为其对象实体;randomname2表示目标对象2对应的伪对象标识,“func2代码实现”分别表示目标对象2对应的真实对象标识和对象实体。
128.s240:对目标文件进行加密,得到目标文件密文。
129.可以理解的是,小程序的运行一般需要依托于宿主应用进行。一种实现中,服务器可以预先确定出待加固的小程序对应的宿主应用,进而可以与小程序对应的宿主应用的客户端协商用于加密目标文件的密钥(可以称为第一密钥),并存储第一密钥;后续的,服务器可以利用该第一密钥对目标文件进行加密,得到目标文件密文。
130.在本说明书的另一种实现方式中,为了实现对小程序效果更好的加固,服务器可以利用随机生成的随机密钥,对目标文件进行加密,得到目标文件密文,进而,将随机密钥与目标文件密文绑定,以使得后续终端设备运行小程序时,利用该随机密钥解密目标文件密文。
131.在一种实现中,得到目标文件密文之后,可以将目标文件密文存储为小程序运行所需数据的数据格式中的任意格式,以将目标文件密文伪装成相应格式的数据,进而将目标文件密文存储于相应格式的数据所在的文件目录(即文件夹)中。例如可以将目标文件密文存储为后缀为rars格式的文件,以将目标文件密文伪装成小程序运行所需的资源数据,进一步将目标文件密文存储于资源目录(即资源数据所在的文件夹)中。
132.s250:将原始程序文件中各目标对象的对象实体移除,并将其中的真实对象标识
替换成伪对象标识,得到中间文件。本步骤中,服务器可以遍历原始程序文件,并在遍历过程中,将原始程序文件中各目标对象的对象实体移除,将各目标对象的真实对象标识替换成伪对象标识,以此得到中间文件。
133.举例而言,原始程序文件可以表示如下:
134.func3(){
135.call func1()
136.}
137.其中,原始程序文件可以表示func3()可以调用真实对象标识为func1()的目标对象1的对象实体。
138.将原始程序文件中目标对象1的对象实体移除,并将其中的真实对象标识func1()替换成伪对象标识randomname1()之后,所得到的中间文件可以表示如下:
139.func3(){
140.call randomname1()
141.}
142.其中,假设目标文件记录有伪对象标识randomname1()、目标对象1对应的真实对象标识func1和对象实体,及其之间的对应关系,在上述中间文件中,func3调用randomname1()时,可以基于目标文件,调用得到真实的目标对象1的对象实体。
143.s260:基于目标文件密文以及中间文件,确定小程序加固文件。其中,该小程序加固文件至少包括目标文件密文以及中间文件,或者,可以至少包括目标文件密文以及中间文件各自的密文。后续的,得到小程序加固文件之后,服务器可以对小程序加固文件进行打包,得到小程序加固文件包,以可以进行线上发布,供终端设备获取运行。
144.本实施例,将小程序的原始程序文件中的若干目标对象(包括真实对象标识和对象实体)转移到目标文件,并对其进行加密,避免其直接以明文的形式存在,使得攻击者无法获知全部的原始程序文件,实现对小程序的加固,从而保护小程序代码本身的安全以及小程序用户的隐私安全。
145.在本说明书的一种实现方式中,所述若干目标对象包括若干目标函数。在这样的情况下,所述s210,可以包括如下步骤11-13:
146.步骤11:针对原始程序文件,构建对应的语法树,其中,语法树的各节点对应小程序所包含的各函数。
147.步骤12:在遍历语法树过程中,基于加固对象列表,确定当前节点所对应的当前函数是否属于若干目标函数。
148.步骤13:若属于,从原始程序文件中,确定出该当前函数的真实函数名和函数实现体。
149.本实施例中,为了实现对小程序的核心代码逻辑的保护,可以直接针对小程序的核心函数进行加固,以实现对小程序的更精准地保护。其中,加固对象列表包括待加固的函数(即目标函数)的真实函数名(即真实对象标识)。具体的,服务器针对原始程序文件,构建对应的语法树,该语法树的各节点对应小程序所包含的各函数,该语法树可以表征小程序中各函数之间的连接关系以及与小程序运行所需的资源数据之间的关系。
150.服务器遍历该语法树,并在遍历语法树的过程中,基于加固对象列表,确定遍历的
当前节点所对应的当前函数是否属于若干目标函数,即确定当前函数的真实函数名是否存在于加固对象列表中。若确定当前函数的真实函数名存在于加固对象列表中,即确定遍历的当前节点所对应的当前函数属于若干目标函数,则从原始程序文件中,确定出该当前函数的真实函数名和函数实现体,进而遍历该当前节点的下一节点。反之,若确定当前函数的真实函数名不存在于加固对象列表中,即确定遍历的当前节点所对应的当前函数不属于若干目标函数,则直接遍历该当前节点的下一节点,直至将该语法树的所有节点遍历完成,遍历结束。以此在遍历语法树的过程中,实现从原始程序文件中的确定出所有目标函数的真实函数名和函数实现体。
151.一种情况中,在确定遍历的当前节点所对应的当前函数属于若干目标函数的情况下,可以直接从原始程序文件中,确定出当前函数的真实函数名和函数实现体出现的位置,并将函数实现体整体从原始程序文件中移除,并将当前函数的真实函数名整体替换成对应的伪函数名(伪对象标识)。
152.在本说明书的另一实施例中,为了实现对小程序更好的保护,所述s240,可以包括:生成随机密钥,利用随机密钥对目标文件进行加密;
153.相应的,所述s260,可以包括:基于目标文件密文、中间文件以及随机密钥,确定小程序加固文件。
154.在一种实现方式中,利用随机密钥对目标文件进行加密,得到目标文件密文之后,服务器利用与小程序的宿主应用的客户端协商的密钥(可以称为第二密钥)加密随机密钥,基于目标文件密文、中间文件以及加密后的随机密钥,确定得到小程序加固文件,其中,小程序加固文件包括目标文件密文、中间文件以及加密后的随机密钥。一种情况中,该协商的第二密钥可以是宿主应用的客户端的公钥,相应的,客户端所在终端设备获得小程序加固文件之后,可以利用客户端的私钥,对加密后的随机密钥进行解密,得到随机密钥明文,继而利用随机密钥明文,对小程序加固文件中的目标文件密文进行解密,得到目标文件明文,后续的,将目标文件明文加载至客户端所在终端设备的内存中,避免其被攻击者获得;利用目标文件明文运行中间文件,以实现对小程序的运行。另一种情况,服务器与宿主应用的客户端协商的密钥为对称密钥,两者协商之后,宿主应用的客户端在其终端设备本地预存该对称密钥,以便对加密后的随机密钥进行解密。
155.另一种实现方式中,服务器可以首先利用目标文件密文、中间文件以及随机密钥生成初始加固文件,进而,利用与小程序的宿主应用的客户端协商的密钥(可以称为第三密钥),对初始加固文件进行加密,得到小程序加固文件。后续的,宿主应用的客户端利用与服务器协商的第三密钥对应的解密密钥,对小程序加固文件解密,得到初始加固文件,进而利用初始加固文件中的随机密钥对目标文件密文解密,得到目标文件明文,将目标文件明文加载至客户端所在终端设备的内存中,避免其被攻击者获得;利用目标文件明文运行中间文件,以实现对小程序的运行。
156.在一种情况中,服务器可以针对同一小程序,针对不同的客户端生成其对应的小程序加固文件,其中,不同客户端对应的小程序加固文件中的随机密钥可以不同也可以相同,并且服务器与不同客户端协商的密钥可以不同,也可以相同。服务器可以针对不同的客户端,存储客户端标识与小程序加固文件对应关系,以为不同的客户端提供相应的小程序加固文件。
157.在另一种实现方式中,所述s260,可以包括如下步骤21-24:
158.步骤21:从中间文件中确定出第一文件。
159.步骤22:基于预设的隐写算法,将随机密钥添加于第一文件中,得到密钥隐藏文件。
160.步骤23:将中间文件中的第一文件替换成密钥隐藏文件,得到更新后的中间文件。
161.步骤24:基于目标文件密文以及更新后的中间文件,确定小程序加固文件。
162.本实现方式中,服务器生成随机密钥,并利用随机密钥对目标文件进行加密,得到目标文件密文之后,可以继续从中间文件中确定出第一文件,其中,该第一文件可以是小程序开发者预先指定的文件。继而,服务器基于预设的隐写算法,将随机密钥添加于第一文件中,得到密钥隐藏文件,以实现将随机密钥隐藏于第一文件中。将中间文件中的第一文件替换成密钥隐藏文件,得到更新后的中间文件,基于目标文件密文以及更新后的中间文件,确定小程序加固文件,其中,小程序加固文件包括目标文件密文以及更新后的中间文件。
163.在一种实现方式中,该第一文件为图片文件,该隐写算法为数字水印算法。具体的,在一个例子中,上述数字水印算法为基于空域水印的lsb水印算法。根据该算法,鉴于图片像素值比特串中的末尾n个位置(即least significant bit,最低位)的数值对所对应像素点的视觉呈现影响可以忽略,因此可以将随机密钥写进图片文件中指定位置处的像素点所对应的像素值比特串的末尾n个位置,以实现将随机密钥添加至图片文件中,得到密钥隐藏文件。后续的,运行小程序的过程中,终端设备可以从密钥隐藏文件的指定位置处的像素点所对应像素值比特串的末尾n个位置,读取出随机密钥。
164.在一种实现中,随机密钥可以为任意位数的密钥。一种情况,随机密钥为128位的密钥。
165.相应于上述方法实施例,本说明书实施例还提供了一种小程序运行方法,应用于终端设备,如图3所示,所述方法可以包括如下步骤s310-s330:
166.s310:获得小程序加固文件。其中,该小程序加固文件包括:目标文件密文以及中间文件,目标文件密文是对目标文件进行加密生成的;目标文件包括,若干目标对象的对象实体和真实对象标识及其对应的伪对象标识;中间文件是,小程序的原始程序文件中各目标对象的对象实体被移除、且真实对象标识被其对应的伪对象标识替换后生成的。
167.在一种实现中,小程序的运行依托于宿主应用的客户端,例如:小程序可以作为宿主应用的客户端的一个插件运行。相应的,该终端设备安装有小程序的宿主应用的客户端,终端设备可以通过该客户端获得待运行的小程序的小程序加固文件。
168.其中,该终端设备还可以预先安装有小程序解析器,该小程序解析器与宿主应用的客户端绑定,或者作为宿主应用的客户端的插件运行。终端设备可以通过宿主应用的客户端,启动该小程序解析器,以对小程序加固文件进行解析及运行。
169.一种情况,终端设备通过宿主应用的客户端首次运行该待运行的小程序时,可以从云端获取该待运行的小程序的小程序加固文件。其中,该云端可以为发布小程序的服务器,可以为加固得到该小程序的小程序加固文件的服务器,也可以为宿主应用的服务器,上述三类服务器可以为同一物理设备也可以为不同物理设备。
170.后续的,终端设备获得该待运行的小程序的小程序加固文件之后,可以在其预设存储空间存储该小程序加固文件。终端设备通过宿主应用的客户端再次运行该待运行的小
程序时,可以直接从该预设存储空间获得该小程序加固文件。
171.一种情况中,该宿主应用可以是任一类型的应用,例如可以提供通信、金融、购物或学习等任意功能的应用,例如可以为:支付宝应用、mpaas应用等。
172.s320:对目标文件密文进行解密,得到目标文件明文。本步骤中,终端设备通过宿主应用的客户端获得小程序加固文件之后,对其进行解析,得到其中的目标文件密文以及中间文件,之后对目标文件密文进行解密,得到目标文件明文。该目标文件明文包括,若干目标对象的对象实体和真实对象标识及其对应的伪对象标识,该中间文件是,小程序的原始程序文件中各目标对象的对象实体被移除、且真实对象标识被其对应的伪对象标识替换后生成的。
173.s330:基于目标文件明文,运行中间文件。本步骤中,终端设备通过宿主应用的客户端运行小程序,即基于目标文件明文,运行中间文件。具体的,在运行中间文件的过程中,每当运行到伪对象标识位置处,即运行到需要调用相应的目标对象的位置处,基于该伪对象标识,从目标文件明文中确定出所对应的目标对象的对象实体,并运行,以实现对小程序的运行。在一种实现中,目标文件为guard.js格式文件,相应的,在运行中间文件的过程中,每当运行到需要调用相应的目标对象的位置处,可以通过js注入方法,将执行逻辑指向目标文件中该伪对象标识所对应的目标对象的对象实体,以运行该伪对象标识所对应的目标对象的对象实体。
174.通过本实施例可以实现对小程序加固文件的解析和运行,保证小程序的有效运行。
175.在本说明书的另一实施例中,各目标对象是,基于加固对象列表从原始程序文件中确定的对象,该加固对象列表包括待加固的对象的真实对象标识。该加固对象列表可以是小程序开发者预先针对小程序设置的。
176.一种实现中,该目标对象可以包括但不限于:原始程序文件中的待加固的函数,待加固的文件以及待加固的资源数据。目标对象为待加固的函数的情况下,其对应的真实对象标识为函数名,相应的对象实体为函数实现体。目标对象为待加固的文件的情况下,其对应的真实对象标识为文件名,相应的对象实体为文件内所存储的真实内容。目标对象为待加固的资源数据的情况下,其对应的真实对象标识为资源数据对应的数据标识,相应的对象实体为真实的资源数据实体。
177.在目标对象为待加固的函数的情况下,加固对象列表包括待加固的函数的真实函数名。
178.在本说明书的另一实施例中,该小程序依赖宿主应用运行,宿主应用的客户端部署于该终端设备;目标文件密文是,利用客户端与服务器预先协商的加密密钥,对目标文件进行加密所得的,该服务器为生成小程序加固文件的服务器(即上述加固得到该小程序的小程序加固文件的服务器);
179.相应的,所述s320,可以包括如下步骤:利用客户端预存的加密密钥对应的解密密钥,对目标文件密文进行解密,得到目标文件明文。一种情况中,该加密密钥可以为上述的第一密钥。
180.本实现方式中,服务器在对小程序进行加固之前,可以预先与小程序的宿主应用的客户端协商好加密密钥,进而利用该加密密钥对目标文件进行加密。相应的,宿主应用的
客户端所在终端设备本地存储有该加密密钥对应的解密密钥,在终端设备运行该小程序之前,首先利用该解密密钥对小程序加固文件中的目标文件密文进行解密,得到目标文件明文。
181.为了实现对小程序的更好的保护,目标文件密文可以利用服务器随机生成的随机密钥对目标文件明文进行加密所得的。相应的,为了保证小程序的小程序加固文件的有效运行,该随机密钥需要发送至终端设备侧。在本说明书的另一实施例中,该小程序加固文件还可以包括随机密钥;
182.所述s320,可以包括如下步骤:利用随机密钥,对目标文件密文进行解密,得到目标文件明文。
183.一种实现方式中,该随机密钥被加密存储于小程序加固文件中,即随机密钥以随机密钥密文的形式存储于小程序加固文件。终端设备可以预先获得解密随机密钥密文的密钥,进而,可以利用该密钥解密出随机密钥明文。
184.在本说明书的另一实现方式中,该随机密钥被添加于中间文件的密钥隐藏文件中,密钥隐藏文件是,利用预设的隐写算法将随机密钥添加至中间文件的第一文件生成的;其中,该随机密钥是上述服务器随机生成的。
185.在所述s320之前,还可以包括如下步骤:利用隐写算法对应的提取算法,从密钥隐藏文件中提取随机密钥。相应的,利用该随机密钥对目标文件密文进行解密,得到目标文件明文。
186.可以理解的,将随机密钥添加至第一文件后,不影响第一文件的运行,即添加有随机密钥的密钥隐藏文件的运行,与第一文件的运行,其两者的运行效果相同。
187.在一种实现方式中,第一文件可以为图片文件,例如,可以为小程序的图标图片文件或者是小程序的其他运行界面图片。隐写算法可以为数字水印算法,相应的,该提取算法可以为数字水印提取算法。
188.可以理解的是,第一文件也可以是小程序运行所需的其他类型的文件,例如第一文件可以是存储代码程序的文件,随机密钥可以被添加至代码程序的指定行的注释区域中,以实现对随机密钥的隐藏,后续的,直接从该代码程序的指定行的注释区域中读取出随机密钥即可。
189.上述内容对本说明书的特定实施例进行了描述,其他实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行,并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要按照示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的,或者可能是有利的。
190.相应于上述方法实施例,本说明书实施例,提供了一种对小程序的加固装置400,应用于服务器,其示意性框图如图4所示,包括:
191.第一确定模块410,配置为从小程序的原始程序文件中,确定出待加固的若干目标对象各自的真实对象标识和对象实体;
192.第一生成模块420,配置为针对各目标对象生成对应的伪对象标识;
193.第二生成模块430,配置为基于各目标对象的真实对象标识和对象实体,以及为其生成的伪对象标识,生成目标文件;
194.加密模块440,配置为对所述目标文件进行加密,得到目标文件密文;
195.移除替换模块450,配置为将所述原始程序文件中各目标对象的对象实体移除,并将其中的真实对象标识替换成所述伪对象标识,得到中间文件;
196.第二确定模块460,配置为基于所述目标文件密文以及所述中间文件,确定小程序加固文件。
197.在一种可实施方式中,第一确定模块410,具体配置为基于加固对象列表,从所述原始程序文件中,确定出所述若干目标对象的真实对象标识和对象实体,其中,所述加固对象列表包括各待加固的对象的真实对象标识。
198.在一种可实施方式中,所述若干目标对象包括若干目标函数;
199.所述第一确定模块410,具体配置为针对所述原始程序文件,构建对应的语法树,其中,所述语法树的各节点对应所述小程序所包含的各函数;
200.在遍历所述语法树过程中,基于所述加固对象列表,确定当前节点所对应的当前函数是否属于所述若干目标函数;
201.若属于,从所述原始程序文件中,确定出该当前函数的真实函数名和函数实现体。
202.在一种可实施方式中,所述加密模块440,具体配置为生成随机密钥,利用所述随机密钥对所述目标文件进行加密;
203.所述第二确定模块460,具体配置为基于所述目标文件密文、所述中间文件以及所述随机密钥,确定小程序加固文件。
204.在一种可实施方式中,所述第二确定模块460,具体配置为从所述中间文件中确定出第一文件;
205.基于预设的隐写算法,将所述随机密钥添加于所述第一文件中,得到密钥隐藏文件;
206.将所述中间文件中的所述第一文件替换成所述密钥隐藏文件,得到更新后的中间文件;
207.基于所述目标文件密文以及更新后的中间文件,确定小程序加固文件。
208.在一种可实施方式中,所述第一文件为图片文件,所述隐写算法为数字水印算法。
209.在一种可实施方式中,所述小程序依赖宿主应用运行;
210.所述加密模块440,具体配置为利用与所述宿主应用的客户端预先协商的加密密钥,对所述目标文件进行加密。
211.在一种可实施方式中,所述待加固的若干目标对象包括如下之一:待加固的函数,待加固的文件以及待加固的资源数据。
212.在一种可实施方式中,所述第二生成模块430,具体配置为按照指定格式,将各目标对象的真实对象标识和对象实体及其对应的伪对象标识,添加至预设文件中,得到目标文件。
213.相应于上述方法实施例,本说明书实施例,提供了一种小程序运行装置500,应用于终端设备,其示意性框图如图5所示,包括:
214.第一获得模块510,配置为获得小程序加固文件,其中,所述小程序加固文件包括:目标文件密文以及中间文件,所述目标文件密文是对目标文件进行加密生成的;所述目标文件包括,若干目标对象的对象实体和真实对象标识及其对应的伪对象标识;所述中间文
件是,小程序的原始程序文件中待加固的各目标对象的对象实体被移除、且真实对象标识被其对应的伪对象标识替换后生成的;
215.第一解密模块520,配置为对所述目标文件密文进行解密,得到目标文件明文;
216.第一运行模块530,配置为基于所述目标文件明文,运行所述中间文件。
217.在一种可实施方式中,各目标对象是,基于加固对象列表从所述原始程序文件中确定的对象,所述加固对象列表包括所述待加固的对象的真实对象标识。
218.在一种可实施方式中,所述小程序依赖宿主应用运行,所述宿主应用的客户端部署于所述终端设备;所述目标文件密文是,利用所述客户端与服务器预先协商的加密密钥,对所述目标文件进行加密所得的,所述服务器为生成所述小程序加固文件的服务器;
219.所述第一解密模块520,具体配置为利用所述客户端预存的所述加密密钥对应的解密密钥,对所述目标文件密文进行解密,得到目标文件明文。
220.在一种可实施方式中,所述小程序加固文件还包括随机密钥;
221.所述第一解密模块520,具体配置为利用所述随机密钥,对所述目标文件密文进行解密,得到目标文件明文。
222.在一种可实施方式中,所述随机密钥被添加于所述中间文件的密钥隐藏文件中,所述密钥隐藏文件是,利用预设的隐写算法将所述随机密钥添加至所述中间文件的第一文件生成的;
223.所述装置还包括:
224.提取模块(图中未示出),配置为在所述得到目标文件明文之前,利用所述隐写算法对应的提取算法,从所述密钥隐藏文件中提取所述随机密钥。
225.在一种可实施方式中,所述第一文件为图片文件,所述提取算法为数字水印提取算法。
226.上述装置实施例与方法实施例相对应,具体说明可以参见方法实施例部分的描述,此处不再赘述。装置实施例是基于对应的方法实施例得到,与对应的方法实施例具有同样的技术效果,具体说明可参见对应的方法实施例。
227.本说明书实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行本说明书所提供的所述支付平台中资产转移的方法。
228.本说明书实施例还提供了一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现本说明书所提供的所述支付平台中资产转移的方法。
229.本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于存储介质和计算设备实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。
230.本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明实施例所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
231.以上所述的具体实施方式,对本发明实施例的目的、技术方案和有益效果进行了进一步的详细说明。所应理解的是,以上所述仅为本发明实施例的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献