System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及数据处理领域,具体涉及一种程序运行方法、装置、计算机设备及存储介质。
技术介绍
1、目前物流行业的各种工业控制设备,比如自动分拣设备、单件分离设备、扫码设备都是将工业电脑部署在现场,软件直接部署在工业电脑上交付给客户。这种工控机软件直接暴露给外部客户,会存在软件程序被破解的风险,影响软件程序的安全性。
2、现有技术中,比较流行的两种软件程序的防破解方案如下:一是,增加一个外置加密设备比如加密狗,程序通过与加密设备交互,或者加密设备对程序进行篡改,这种方案对软件运行存在限制且由于需要引入外部方案,增加了运营及部署成本。二是,增加一个认证后台服务器,将计算机的硬件信发给后台,后台返回程序是否可运行,这种方案需要生产环境接入外网,将生产环境暴露在外网不安全环境。这两种方案均难以保障影响软件程序的安全性。因此,有必要提供一种节省成本且防破解能力强的程序运行方案。
技术实现思路
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、计算所述第二代码段的循环冗余校本文档来自技高网...
【技术保护点】
1.一种程序运行方法,其特征在于,所述程序运行方法包括:
2.根据权利要求1所述的程序运行方法,其特征在于,所述根据所述第一代码段和所述第二代码段,检测所述目标程序是否被篡改,得到第一检测结果,包括:
3.根据权利要求1所述的程序运行方法,其特征在于,所述目标程序还包括数据段,所述数据段为用于存储赋值变量的内存空间;
4.根据权利要求1所述的程序运行方法,其特征在于,所述在所述第一检测结果为所述目标程序未篡改的情况下,对运行所述目标程序的目标设备的硬件信息进行防伪检测,得到第二检测结果,包括:
5.根据权利要求4所述的程序运行方法,其特征在于,所述对所述第三循环冗余校验值及所述第一硬件信息进行加密处理,得到防伪检测密文,包括:
6.根据权利要求4所述的程序运行方法,其特征在于,在所述对所述第三循环冗余校验值及所述第二硬件信息进行加密处理,得到防伪检测密文之后,还包括:
7.根据权利要求1所述的程序运行方法,其特征在于,所述在所述第二检测结果为所述硬件信息未伪造的情况下,退出所述目标程序,对所述目标程序的软件许
8.一种程序运行装置,其特征在于,所述程序运行装置包括:
9.一种计算机设备,其特征在于,所述计算机设备包括:
10.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被处理器进行加载,以执行权利要求1至7任一项所述的程序运行方法中的步骤。
...【技术特征摘要】
1.一种程序运行方法,其特征在于,所述程序运行方法包括:
2.根据权利要求1所述的程序运行方法,其特征在于,所述根据所述第一代码段和所述第二代码段,检测所述目标程序是否被篡改,得到第一检测结果,包括:
3.根据权利要求1所述的程序运行方法,其特征在于,所述目标程序还包括数据段,所述数据段为用于存储赋值变量的内存空间;
4.根据权利要求1所述的程序运行方法,其特征在于,所述在所述第一检测结果为所述目标程序未篡改的情况下,对运行所述目标程序的目标设备的硬件信息进行防伪检测,得到第二检测结果,包括:
5.根据权利要求4所述的程序运行方法,其特征在于,所述对所述第三循环冗余校验值及所述第一硬件信息进行加密处理,得到防伪检...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。