软件生成方法、软件运行方法、电子设备和存储介质与流程

文档序号:32519064发布日期:2022-12-13 18:14阅读:25来源:国知局
软件生成方法、软件运行方法、电子设备和存储介质与流程

1.本技术涉及计算机领域,尤其是涉及一种软件生成方法、软件运行方法、电子设备和存储介质。


背景技术:

2.随着科学技术的发展,软件的应用也越来越广。对于软件而言,为了避免软件在未经许可的情况下被非授权人员使用,因而进行软件授权是十分必要的。现有的软件通常通过许可证license授权,生成license时,将cpu序列号、硬盘序列号、主板序列号等参数经过一系列的加密处理,生成最终的license。
3.然而,本技术的发明人发现,现有技术中生成的license通过反编译、逻辑推测方式可以破解,替换license即可以无限制使用,造成软件被非授权人员随意使用。


技术实现要素:

4.本发明的目的在于提供一种软件生成方法、软件运行方法、电子设备和存储介质,可以减少现有技术中存在的软件被非授权人员随意使用的技术问题。
5.第一方面,本发明提供一种软件生成方法,包括:获取软件源码,获取用户信息,并生成密钥;将所述软件源码、所述用户信息、以及所述密钥输入软件编译器;获取所述软件编译器输出的目标字节码;根据所述密钥对所述目标字节码进行加密处理,生成目标软件。
6.第二方面,本发明提供一种软件运行方法,包括:对目标软件进行解密,获取所述目标软件的应用字节码;判断所述应用字节码中所包含的用户信息与所述目标软件对应的用户信息是否相同;若所述应用字节码中所包含的用户信息与所述目标软件对应的用户信息相同,读取所述应用字节码中的软件源码以运行所述目标软件。
7.第三方面,本发明提供一种电子设备,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如前述的软件生成方法、或者以使所述至少一个处理器能够执行如前述的软件运行方法。
8.第四方面,本发明提供一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行实现前述的软件生成方法、或者计算机程序被处理器执行实现前述的软件运行方法。
9.本发明提供的软件生成方法、软件运行方法、电子设备和存储介质中,在生成目标软件的过程中,将获取的用户信息和软件源码一同输入软件编译器,软件编译器输出的目标字节码中即包含有用户信息,根据目标字节码生成的目标软件中同样包含有用户信息,在后续运行目标软件的过程中,可以根据目标软件的应用字节码中所包含的用户信息对运行环境进行确认,只有被授权使用、具有目标软件所对应的用户信息的软件运行环境下,才可以运行目标软件,从而减少现有技术中存在的软件被非授权人员随意使用的技术问题。
10.在一些实施例中,所述生成密钥,包括:根据所述用户信息生成所述密钥。使用用
户信息生成密钥,可以提升密钥的保密性能,进而提升目标软件的安全性能。
11.在一些实施例中,所述对所述目标字节码进行加密处理,包括:使用所述公钥对所述目标字节码进行加密处理。
12.在一些实施例中,所述密钥为rsa密钥对。由于rsa密钥对的安全性能较高,本实施例中生成rsa密钥对作为密钥可以有效的提升目标软件的安全性;此外,由于rsa加密算法的应用范围较广,使用rsa密钥对作为密钥可以使得目标软件可以更好的与其它软硬件配合使用,提升目标软件的适用范围。
13.在一些实施例中,所述读取所述应用字节码中的软件源码以运行所述目标软件前,所述方法还包括:将所述应用字节码写入内存储器中。将应用字节码写入内存储器中,由于内存储器中的数据安全性较高,减少了被反编译和逻辑破解的可能,保护软件源码的安全,保护了软件的安全性。
14.在一些实施例中,所述读取所述应用字节码中的软件源码以运行所述目标软件后,所述方法还包括:关闭所述目标软件时,删除所述内存储器中的所述应用字节码。在关闭目标软件时删除内存储器中的应用字节码,可以避免应用关闭后可能存在的应用字节码泄露的风险,进一步的保护软件源码的安全,保护了软件的安全性。
15.在一些实施例中,所述方法,还包括:将运行所述目标软件所产生的中间数据存储在所述内存储器中。将运行所述目标软件所产生的中间数据存储在所述内存储器中,实现目标软件的整个运行过程均运行在内存储器中,降低了软件运行过程中产生的中间数据泄露的风险,进一步的减少了目标软件被反编译和逻辑破解的可能。
附图说明
16.为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
17.图1为本发明实施例提供的软件生成方法的流程示意图;
18.图2为本发明实施例提供的软件运行方法的流程示意图;
19.图3为本发明实施例提供的另一种软件运行方法的流程示意图;
20.图4为本发明实施例提供的又一种软件运行方法的流程示意图;
21.图5为本发明实施例提供的电子设备的结构示意图。
具体实施方式
22.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
23.因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。
24.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一
个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
25.在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,或者是该发明产品使用时惯常摆放的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
26.在本发明的描述中,还需要说明的是,除非另有明确的规定和限定,术语“设置”、“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
27.下面结合附图,对本发明的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
28.本发明实施例提供了一种软件生成方法,具体步骤如图1所示,包括以下步骤:
29.步骤s101:获取软件源码,获取用户信息,并生成密钥。
30.具体的,在本步骤中,软件源码为业务人员基于业务需求编写的软件源代码,其构成软件运行的基础。用户信息为用户的个人信息,例如用户的账号、邮箱、工号、手机号等等均可以作为用户信息进行认证,此外,当用户为公司时,用户信息也可以包括公司信息、例如公司名称、公司邮箱、公司营业编号等等,具体可以根据用户许可进行获取。可以理解的是,用户信息可以在编译前由用户主动提供或者是在征得用户同意后获取得到,本发明实施例中获取用户信息前必须征得用户同意,且仅可获取用户允许获取的用户信息。
31.密钥是一种参数,它是在明文转换为密文或将密文转换为明文的算法中输入的参数,密钥分为对称密钥与非对称密钥。其中,对称密钥即信息的发送方(在本实施例中即软件的生成终端)和接收方(在本实施例中即软件的使用终端)使用同一个密钥去加密和解密数据。非对称密钥为一对公钥和私钥组成的密钥对,密钥对中的一个公开发布,即公钥,另一个秘密保存,即私钥。在使用过程中使用其中之一进行加密而使用另一个进行解密。
32.在本实施例中,密钥为包括公钥和私钥的rsa(rivest-shamir-adleman)密钥对,即根据rsa加密算法生成的密钥对。由于rsa密钥对的安全性能较高,本实施例中生成rsa密钥对作为密钥可以有效的提升生成的软件的安全性;此外,由于rsa加密算法的应用范围较广,使用rsa密钥对作为密钥可以使得生成的软件可以更好的与其它软硬件配合使用,提升生成的软件的适用范围。可以理解的是,前述密钥为包括公钥和私钥的rsa密钥对仅为本实施例中的一种具体的举例说明,并不构成限定,在本发明的其它实施例中,也可以是生成des(data encryption standard,数据加密标准)密钥、desede(三重des)密钥、aes(advanced encryption standard,高级加密标准)密钥等,具体可以根据实际需要进行灵活的设置和使用。
33.进一步的,在本发明的一种具体的实施例中,可以根据用户信息生成密钥,即在生成密钥的过程中加入用户信息。使用用户信息生成的密钥可以提升密钥的保密性能,进而提升目标软件的安全性能。可以理解的是,前述根据用户信息生成密钥仅为本实施例中的
一种具体的密钥生成方法的举例说明,并不构成限定。
34.步骤s102:将软件源码、用户信息、以及密钥输入软件编译器,获取软件编译器输出的目标字节码。
35.具体的,在本步骤中,可以预先对软件编译器进行逻辑重写,使得软件编译器可以将软件源码、用户信息、以及密钥按照一种固定顺序结合形成字节码作为目标字节码进行输出。将软件源码、用户信息、以及密钥按照固定顺序结合形成目标字节码可以使得后续运行软件时读取目标字节码也可以按照固定顺序进行读取,提升软件的运行速度。
36.步骤s103:对目标字节码进行加密处理,生成目标软件。
37.具体的,在本步骤中,使用步骤s101中生成的密钥对目标字节码进行加密处理,然后对加密后的目标字节码进行常规的软件搭建加工即可生成目标软件。
38.与现有技术相比,本实施例所提供的软件生成方法中,将获取的用户信息和软件源码一同输入软件编译器,软件编译器输出的目标字节码中即包含有用户信息,根据目标字节码生成的目标软件中同样包含有用户信息,在后续运行目标软件的过程中,可以根据目标软件的应用字节码中所包含的用户信息对运行环境进行确认,只有被授权使用、具有目标软件所对应的用户信息的软件运行环境下,才可以运行目标软件,从而减少现有技术中存在的软件被非授权人员随意使用的技术问题。
39.本发明实施例还提供了一种软件运行方法,具体步骤如图2所示,包括以下步骤:
40.步骤s201:对目标软件进行解密,获取目标软件的应用字节码。
41.具体的,在本步骤中,预先从目标软件的软件开发方接收到目标软件的解密密钥以及目标软件对应的用户信息。可以理解的是,在接收的过程中可以是通过文件通信的方式直接接收从软件开发方发送的目标软件的解密密钥以及目标软件对应的用户信息,也可以是通过接收第三方平台发送的目标软件的解密密钥以及目标软件对应的用户信息,或者是通过硬件交流的方式接收到目标软件的解密密钥以及目标软件对应的用户信息,具体可以根据实际需要进行灵活的使用。
42.其中,解密密钥为可以对目标软件进行解密的密钥。例如,若目标软件通过rsa密钥对的公钥进行加密,则解密密钥为rsa密钥对的私钥,或者若目标软件通过rsa密钥对的私钥进行加密,则解密密钥为rsa密钥对的公钥。
43.获取到目标软件的解密密钥后,则可以使用解密密钥对目标软件进行解密,获取目标软件的应用字节码。
44.步骤s202:判断应用字节码中所包含的用户信息与目标软件对应的用户信息是否相同,若是,执行步骤s203,若否,结束流程。
45.具体的,在本步骤中,将解密目标软件得到的应用字节码中所包含的用户信息与自软件开发方接收到的目标软件对应的用户信息进行一一比对,判断两者是否相同。可以理解的是,由于数据传输过程中可能存在的丢包、数据变形等误差的存在,因此,在本实施例中,可以根据需要预设相似度阈值,若解密目标软件得到的应用字节码中所包含的用户信息与自软件开发方接收到的目标软件对应的用户信息的相似度大于预设相似度阈值即判定为两者相同,反之,若解密目标软件得到的应用字节码中所包含的用户信息与自软件开发方接收到的目标软件对应的用户信息的相似度小于或等于预设相似度阈值即判定为两者不相同。可以理解的是,预设相似度阈值可以根据实际的网络情况、用户需求等进行灵
活的设置和调整。
46.步骤s203:读取应用字节码中的软件源码以运行目标软件。
47.具体的,在本步骤中,若解密目标软件得到的应用字节码中所包含的用户信息与自软件开发方接收到的目标软件对应的用户信息判定为相同,则说明目标软件与当前运行环境匹配,此时读取应用字节码中的软件源码以运行目标软件即可确保目标软件的运行安全。
48.与现有技术相比,本实施例所提供的软件运行方法中,在解密目标软件前,从软件开发方接收到目标软件对应的用户信息,在对目标软件进行解密后,通过比对解密目标软件得到的应用字节码中所包含的用户信息与自软件开发方接收到的目标软件对应的用户信息是否相同,即可判定运行环境是否为目标软件适配的运行环境,只有当两者的用户信息相同时才可以读取应用字节码中的软件源码,运行目标软件,从而有效的保护了目标软件的运行安全。
49.本发明实施例还提供了一种软件运行方法,具体步骤如图3所示,包括以下步骤:
50.步骤s301:对目标软件进行解密,获取目标软件的应用字节码。
51.步骤s302:判断应用字节码中所包含的用户信息与目标软件对应的用户信息是否相同,若是,执行步骤s303,若否,结束流程。
52.步骤s303:将应用字节码写入内存储器中。
53.具体的,在本步骤中,若解密目标软件得到的应用字节码中所包含的用户信息与自软件开发方接收到的目标软件对应的用户信息判定为相同,即将应用字节码写入内存储器中进行存储。
54.步骤s304:读取应用字节码中的软件源码以运行目标软件。
55.具体的,在本步骤中,运行目标软件的类加载器直接从内存储器中读取应用字节码数据引用启动程序,以运行目标软件,而不将应用字节码保存在磁盘上。
56.优选的,在本发明的一种实施例中,还将目标软件运行过程中产生的中间数据同样存储在内存储器中。将运行目标软件所产生的中间数据存储在内存储器中,实现目标软件的整个运行过程均运行在内存储器中,降低了软件运行过程中产生的中间数据泄露的风险,进一步的减少了目标软件被反编译和逻辑破解的可能。
57.可以理解的是,本实施例中的步骤s301和步骤s302与前述实施例中的步骤s201和步骤s202大致相同,具体可以参照前述实施例的具体说明,在此不进行赘述。
58.与现有技术相比,本实施例所提供的软件运行方法中,在解密目标软件得到的应用字节码中所包含的用户信息与自软件开发方接收到的目标软件对应的用户信息判定为相同时,将应用字节码写入内存储器中进行存储,由于内存储器中的数据安全性较高,减少了被反编译和逻辑破解的可能,保护软件源码的安全,保护了软件的安全性。
59.本发明实施例还提供了一种软件运行方法,具体步骤如图4所示,包括以下步骤:
60.步骤s401:对目标软件进行解密,获取目标软件的应用字节码。
61.步骤s402:判断应用字节码中所包含的用户信息与目标软件对应的用户信息是否相同,若是,执行步骤s403,若否,结束流程。
62.步骤s403:将应用字节码写入内存储器中。
63.步骤s404:读取应用字节码中的软件源码以运行目标软件。
64.步骤s405:关闭目标软件时,删除内存储器中的应用字节码。
65.具体的,在本步骤中,当目标软件被关闭而停止运行时,将存储在内存储器中的应用字节码进行删除。
66.可以理解的是,本实施例中的步骤s401至步骤s404与前述实施例中的步骤s301至步骤s304大致相同,具体可以参照前述实施例的具体说明,在此不进行赘述。
67.与现有技术相比,本实施例所提供的软件运行方法中,在关闭目标软件时删除内存储器中的应用字节码,可以避免应用关闭后可能存在的应用字节码泄露的风险,进一步的保护软件源码的安全,保护了软件的安全性。
68.本发明实施例还涉及一种电子设备,如图5所示,包括:至少一个处理器501;以及,与至少一个处理器501通信连接的存储器502;其中,存储器502存储有可被至少一个处理器501执行的指令,指令被至少一个处理器501执行,以使至少一个处理器501能够执行上述各实施例中的软件生成方法,或者指令被至少一个处理器501执行,以使至少一个处理器501能够执行上述各实施例中的软件运行方法。
69.其中,存储器和处理器采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器和存储器的各种电路连接在一起。总线还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路连接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和收发机之间提供接口。收发机可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器处理的数据通过天线在无线介质上进行传输,进一步,天线还接收数据并将数据传送给处理器。
70.处理器负责管理总线和通常的处理,还可以提供各种功能,包括定时,外围接口,电压调节、电源管理以及其他控制功能。而存储器可以被用于存储处理器在执行操作时所使用的数据。
71.本发明实施例还涉及一种计算机可读存储介质,存储有计算机程序。计算机程序被处理器执行时实现上述方法实施例。
72.即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本技术各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
73.最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1