CN111228819B - 一种保护Shader的方法、装置和设备 - Google Patents
一种保护Shader的方法、装置和设备 Download PDFInfo
- Publication number
- CN111228819B CN111228819B CN201911403512.1A CN201911403512A CN111228819B CN 111228819 B CN111228819 B CN 111228819B CN 201911403512 A CN201911403512 A CN 201911403512A CN 111228819 B CN111228819 B CN 111228819B
- Authority
- CN
- China
- Prior art keywords
- file
- shader
- source code
- version number
- code 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 47
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 239000012634 fragment Substances 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000003086 colorant Substances 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/70—Game security or game management aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
- G06F21/125—Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Multimedia (AREA)
- Theoretical Computer Science (AREA)
- Technology Law (AREA)
- Business, Economics & Management (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- Storage Device Security (AREA)
Abstract
本申请公开了一种保护Shader的方法、装置和设备,其中方法包括将Shader代码文件拆分成框架代码文件和Shader源代码文件;将Shader源代码文件上传至第一预置目录文件夹;对Shader源代码文件进行加密,在生成密文文件时,生成用于记录最新版本号的密文版本号文件;在编译前,若所述密文版本号文件的时间戳与本地版本号文件的时间戳不相同,则获取Shader源代码文件,并根据Shader源代码文件对Shader进行编译;编译完成后,删除Shader源代码文件,解决了目前还没有一种保护shader的方法应用于unity游戏中的技术问题。
Description
技术领域
本申请涉及计算机网络技术领域,尤其涉及一种保护Shader的方法、装置和设备。
背景技术
shader存储的是GPU的执行代码,用以告诉GPU如何绘制目标像素的颜色,广泛应用于3D图形领域。通过shader存储的执行代码,程序员可以获得各种3D图形效果。
在unity游戏引擎中,shader是游戏公司的核心渲染技术,如果被第三方公司或者其他人获得,则会泄露公司核心技术。在游戏开发周期内,游戏公司的工作人员可能出现变更频繁的情况,从而导致很多人都能随意获得shader文件,加大shader被窃取的几率。然而,目前还没有一种保护shader的方法应用于unity游戏中。
发明内容
有鉴于此,本申请提供了一种保护Shader的方法、装置和设备,解决了目前还没有一种保护shader的方法应用于unity游戏中的技术问题。
本申请第一方面提供了一种保护Shader的方法,包括:
将Shader代码文件拆分成框架代码文件和Shader源代码文件;
将所述Shader源代码文件上传至第一预置目录文件夹;
对所述Shader源代码文件进行加密,在生成密文文件时,生成用于记录最新版本号的密文版本号文件;
在编译前,若所述密文版本号文件的时间戳与本地版本号文件的时间戳不相同,则获取所述Shader源代码文件,并根据所述Shader源代码文件对Shader进行编译;
编译完成后,删除所述Shader源代码文件。
可选地,所述对所述Shader源代码文件进行加密,在生成密文文件时,生成用于记录最新版本号的密文版本号文件,包括:
运用DES加密算法和密钥对所述Shader源代码文件进行加密,在生成密文文件时,生成用于记录最新版本号的密文版本号文件。
可选地,所述在编译前,若所述密文版本号文件的时间戳与本地版本号文件的时间戳不相同,则获取所述Shader源代码文件,并根据所述Shader源代码文件对Shader进行编译,包括:
在编译前,若所述密文版本号文件的时间戳与本地版本号文件的时间戳不相同,则向服务器发送所述密钥的请求信号;
在获取所述服务器发送的携带有所述密钥的返回信号后,通过所述密钥和所述密文文件对所述Shader源代码文件进行解密;
在解密成功后,获取所述Shader源代码文件,并根据所述Shader源代码文件对Shader进行编译。
可选地,所述在获取所述服务器发送的携带有所述密钥的返回信号后,通过所述密钥和所述密文文件对所述Shader源代码文件进行解密,之后还包括;
将Shader源代码写入第二预置目录文件。
可选地,所述在编译前,若所述密文版本号文件的时间戳与本地版本号文件的时间戳不相同,则向服务器发送所述密钥的请求信号,之后还包括:
当获取所述返回信号失败时,继续对所述Shader进行编译;
查找所述Shader源代码文件;
当查找失败时,发出编译报错信号。
可选地,所述对所述Shader源代码文件进行加密,在生成密文文件时,生成用于记录最新版本号的密文版本号文件,之后,所述在编译前,若所述密文版本号文件的时间戳与本地版本号文件的时间戳不相同,则获取所述Shader源代码文件,并根据所述Shader源代码文件对Shader进行编译,之前还包括:
将所述密文文件和所述密文版本号文件上传至SVN。
可选地,所述将Shader代码文件拆分成框架代码文件和Shader源代码文件,之后还包括:
将所述框架代码文件上传至所述SVN。
本申请第二方面提供了一种保护Shader的装置,包括:
拆分单元,用于将Shader代码文件拆分成框架代码文件和Shader源代码文件;
第一上传单元,用于将所述Shader源代码文件上传至第一预置目录文件夹;
加密及生成单元,用于对所述Shader源代码文件进行加密,在生成密文文件时,生成用于记录最新版本号的密文版本号文件;
编译单元,用于在编译前,若所述密文版本号文件的时间戳与本地版本号文件的时间戳不相同,则获取所述Shader源代码文件,并根据所述Shader源代码文件对Shader进行编译;
删除单元,用于编译完成后,删除所述Shader源代码文件。
可选地,还包括:
发送单元,用于在编译前,若所述密文版本号文件的时间戳与本地版本号文件的时间戳不相同,则向服务器发送所述密钥的请求信号;
解密单元,用于在获取所述服务器发送的携带有密钥的返回信号后,通过所述密钥和所述密文文件对所述Shader源代码文件进行解密;
编辑单元,用于将Shader源代码写入第二预置目录文件;
查找单元,用于查找所述Shader源代码文件;
报错单元,用于当查找失败时,发出编译报错信号;
分配单元,用于将所述密文文件和所述密文版本号文件上传至SVN;
第二上传单元,用于将所述框架代码文件上传至所述SVN。
本申请第三方面提供了一种保护Shader的设备,所述设备包括处理器以及存储器;
所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;
所述处理器用于根据所述程序代码中的指令执行本申请第一方面或第二方面所述的保护Shader的方法。
从以上技术方案可以看出,本申请具有以下优点:
本申请提供了一种保护Shader的方法,包括:将Shader代码文件拆分成框架代码文件和Shader源代码文件;将Shader源代码文件上传至第一预置目录文件夹;对Shader源代码文件进行加密,在生成密文文件时,生成用于记录最新版本号的密文版本号文件;在编译前,若所述密文版本号文件的时间戳与本地版本号文件的时间戳不相同,则获取Shader源代码文件,并根据Shader源代码文件对Shader进行编译;编译完成后,删除Shader源代码文件。
本申请先将Shader代码文件拆分成框架代码文件和Shader源代码文件,由于核心代码在存储于第一预置目录文件夹的Shader源代码文件中,而第一预置目录文件夹不在SVN上,即只有Shader工程开发人员才知道第一预置目录文件夹的位置,避免非Shader工程开发人员获取到Shader源代码文件。对Shader源代码文件进行加密,进一步地加强了对Shader的保护,生成密文文件的同时,还生成用于记录最新版本号的密文版本号文件,由于unity不能自动识别密文文件,所以需要通过判断密文版本号文件的时间戳与本地版本号文件的时间戳不相同时才对Shader进行编译,编译完成后,删除Shader源代码文件,从而解决了目前还没有一种保护shader文件的方法应用于unity游戏中的技术问题。
附图说明
图1为本申请实施例中一种保护Shader的方法的一个流程示意图;
图2为本申请实施例中一种保护Shader的方法的另一流程示意图;
图3为本申请实施例中一种保护Shader的装置的实施例的结构示意图。
具体实施方式
本申请实施例提供了一种保护Shader的方法、装置和设备,解决了目前还没有一种保护shader文件的方法应用于unity游戏中的技术问题。
为使得本申请的发明目的、特征、优点能够更加的明显和易懂,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本申请一部分实施例,而非全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
请参阅图1,本申请实施例提供了一种保护Shader的方法,包括:
步骤S101、将Shader代码文件拆分成框架代码文件和Shader源代码文件。
需要说明的是,着色器分顶点着色器和片段着色器,将Shader代码文件分为框架代码文件与Shader源代码文件,由于框架代码文件只记录使用了哪个顶点着色器和哪个片段着色器,Shader源代码文件记录的是顶点着色器和片段着色器的源码,因此,Shader源代码文件存储的是Shader代码文件的核心代码。
还需要说明的是,Shader源代码文件可以命名为cginc文件,该文件的后缀为*cginc。
步骤S102、将Shader源代码文件上传至第一预置目录文件夹。
可以理解的是,工作人员通过SVN对游戏开发工程进行管理,SVN是subversion的缩写,是一个开放源代码的版本控制系统,通过采用分支管理系统的高效管理,即用于多个人共同开发同一个项目,实现共享资源,集中式的管理。将Shader源代码文件上传到第一预置目录文件夹,而第一预置目录文件夹并不在SVN上,也就是说,只有Unity游戏开发人员才知道Shader源代码文件的位置。
需要说明的是,Shader源代码文件可以是两个、三个或者四个,且可以上传至不同的预置目录文件夹,本领域技术人员可以根据实际需要进行设置,此处不做具体限定。
步骤S103、对Shader源代码文件进行加密,在生成密文文件时,生成用于记录最新版本号的密文版本号文件。
可以理解的是,本实施例对Shader源代码文件进行加密,进一步加强了对Shader的保护,在密文文件生成的同时,再生成用于记录最新版本号的密文版本号文件,即密文文件和密文版本号文件的生成时间是相同的。
步骤S104、在编译前,若密文版本号文件的时间戳与本地版本号文件的时间戳不相同,则获取Shader源代码文件,并根据Shader源代码文件对Shader进行编译。
可以理解的是,由于密文文件的后缀是*cgbytes,unity不能自动识别,所以需要检测密文版本号文件的时间戳与本地版本号文件的时间戳是否相同,若不相同,则会使MD5发生改变,从而可以判断出Shader需要编译,并获取Shader源代码文件,通过Shader源代码文件存储的核心代码对Shader进行编译。若相同则说明不需要编译。
步骤S105、编译完成后,删除Shader源代码文件。
可以理解的是,当编译完成后,得到的是unity工程运行所需要的二进制文件,此时就不再需要Shader的源代码文件了,因此,可以删除Shader源代码文件。
本申请实施例先将Shader代码文件拆分成框架代码文件和Shader源代码文件,由于核心代码在存储于第一预置目录文件夹的Shader源代码文件中,即只有Shader工程开发人员才知道第一预置目录文件夹的位置,避免非Shader工程开发人员获取到Shader源代码文件。对Shader源代码文件进行加密,进一步地加强了对Shader的保护,生成密文文件的同时,还生成用于记录最新版本号的密文版本号文件,由于unity不能自动识别密文文件,所以需要通过判断密文版本号文件的时间戳与本地版本号文件的时间戳不相同时才对Shader进行编译,编译完成后,删除Shader源代码文件,从而解决了目前还没有一种保护shader文件的方法应用于unity游戏中的技术问题。
以上为本申请提供的一种保护Shader的方法的第一个实施例的详细说明,下面为本申请提供的一种保护Shader的方法的第二个实施例的详细说明请参阅图2,本申请实施例提供了一种保护Shader的方法,包括:
步骤S201、将Shader代码文件拆分成框架代码文件和Shader源代码文件。
步骤S202、将框架代码文件上传至SVN。
需要说明的是,框架代码并不是核心代码,因此,可以直接上传至SVN,其他工作人员即使获取了Shader框架文件,也无法获取Shader的核心代码。
步骤S203、将Shader源代码文件上传至第一预置目录文件夹。
步骤S204、对Shader源代码文件进行加密,在生成密文文件时,生成用于记录最新版本号的密文版本号文件。
可以理解的是,本申请实施例运用DES加密算法和密钥对Shader源代码文件进行加密。
需要说明的是,加密算法可以是DES,也可以是RSA,还可以是SHA,本领域技术人员可以根据需要进行设置,此处不做具体限定。
步骤S205、将密文文件和密文版本号文件上传至SVN。
可以理解的是,将密文版本号文件和密文文件上传至SVN,密文版本号文件记录最新版本号,即密文版本号文件存储的是一个时间戳。
步骤S206、在编译前,若密文版本号文件的时间戳与本地版本号文件的时间戳不相同,则向服务器发送密钥的请求信号。
可以理解的是,由于密文文件的后缀是*cgbytes,unity不能自动识别,所以需要监测密文版本号文件的时间戳与本地版本号文件的时间戳是否相同,若不相同,则会使MD5发生改变,从而可以判断出Shader需要编译,并向服务器发送密钥的请求信号,服务器在接收到请求信号后,会先验证请求信号发送者的身份。
还需要说明的是,服务器发送密钥请求信号可以采用通过账号登录系统的方式,本领域技术人员可以根据实际需要进行设置。
步骤S207、在获取服务器发送的携带有密钥的返回信号后,通过密钥和密文文件对Shader源代码文件进行解密。
需要说明的是,用户登录系统,向服务器发送密钥请求信号后,服务端先验证身份等用户信息,当用户信息验证通过后,服务器判断发送密钥请求信号的IP地址是否是公司办公地点或者规定的其他地点,如果是,服务器才发送携带有密钥的返回信号,此时便可通过密钥和之前加密时生成的密文文件对Shader源代码文件进行解密,得到Shader源代码文件,并且控制整个解密流程的C#代码是经过混淆的dll,让破解更加困难。
进一步地,在获取服务器发送的携带有密钥的返回信号后,通过密钥和密文文件对Shader源代码文件进行解密,之后,将Shader源代码写入第二预置目录文件。
需要说明的是,将解密后的Shader源代码文件所存储的Shader源代码重新写入第二预置目录文件,第二预置目录文件的存储位置不同于之前的位置,因此,进一步地,加强了对Shader的保护。
步骤S208、在解密成功后,获取Shader源代码文件,并根据Shader源代码文件对Shader进行编译。
需要说明的是,本地版本号文件是每次解密的时候根据密文版本号文件生成的。
步骤S209、编译完成后,删除Shader源代码文件。
需要说明的是,步骤S207至步骤S209是在接收到服务器发送的返回信号时执行的,若在步骤S206之后,在预置时间内未接收到服务器发送的返回信号,可以跳转执行步骤S210至步骤S212。
步骤S210、当获取密钥返回信号失败时,继续对Shader进行编译。
需要说明的是,当在预置时间内无返回信号时,则说明获取密钥返回信号失败,预置时间可以设置为60秒、也可以设置为80秒。如果发送密钥请求信号的IP地址并不是公司办公地点或者规定的其他地点时,服务器不会返回密钥,系统在没有获取Shader源代码文件的情况下继续进行编译。
步骤S211、查找Shader源代码文件。
需要说明的是,由于系统在没有获取Shader源代码文件的情况下继续进行编译,而编译的依据是Shader源代码文件所存储的核心代码,因此,需要查找Shader源代码文件。
步骤S212、查找失败时,发出编译报错信号。
可以理解的是,当在预置时间内无返回信号时,说明发送密钥请求信号的IP地址并不是公司办公地点或者规定的其他地点,则服务器不会返回密钥,此时直接对Shader进行编译,在对Shader进行编译的同时,查找Shader源代码文件,当查找不到Shader源代码文件时,编译会报错,效果全部丢失,Shader效果显示错误。
本申请实施例先将Shader代码文件拆分成框架代码文件和Shader源代码文件,将框架代码文件上传至SVN,Shader源代码文件上传至第一预置目录文件夹,由于核心代码在存储于第一预置目录文件夹的Shader源代码文件中,即只有Shader工程开发人员才知道第一预置目录文件夹的位置,避免非Shader工程开发人员获取到Shader源代码文件。本申请还运用DES加密算法和密钥对Shader源代码文件进行加密,进一步地加强了对Shader的保护,生成密文文件的同时,还生成用于记录最新版本号的密文版本号文件,由于unity不能自动识别密文文件,所以需要通过判断密文版本号文件的时间戳与本地版本号文件的时间戳不相同时才对Shader进行编译,编译完成后,删除Shader源代码文件,从而解决了目前还没有一种保护shader文件的方法应用于unity游戏中的技术问题。
以上为本申请提供的一种保护Shader的方法的第二个实施例的详细说明,下面为本申请提供的一种保护Shader的装置的实施例的详细说明。
请参阅图3,本申请实施例提供了一种保护Shader的装置,包括:
拆分单元301,用于将Shader代码文件拆分成框架代码文件和Shader源代码文件。
第一上传单元302,用于将Shader源代码文件上传至第一预置目录文件夹。
加密及生成单元303,用于对Shader源代码文件进行加密,在生成密文文件时,生成用于记录最新版本号的密文版本号文件。
编译单元304,用于在编译前,若第一版本文件的时间戳与第二版本文件的时间戳不相同,则获取Shader源代码文件,并根据Shader源代码文件对Shader进行编译。
编译单元304包括发送单元3041和解密单元3042。
发送单元3041,用于在编译前,若密文版本号文件的时间戳与本地版本号文件的时间戳不相同,则向服务器发送密钥的请求信号。
解密单元3042,用于在获取服务器发送的携带有密钥的返回信号后,通过密钥和密文文件对Shader源代码文件进行解密。
删除单元305,用于编译完成后,删除Shader源代码文件。
编辑单元306,用于将Shader源代码写入第二预置目录文件。
查找单元307,用于查找Shader源代码文件。
报错单元308,用于当查找失败时,发出编译报错信号。
分配单元309,用于将密文文件和密文版本号文件上传至SVN;
第二上传单元310,用于将框架代码文件上传至SVN。
本申请实施例还提供了一种保护Shader的设备,设备包括处理器以及存储器;存储器用于存储程序代码,并将程序代码传输给处理器;处理器用于根据程序代码中的指令执行上述第一实施例或第二实施例所述的保护Shader的方法。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的网络,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个待安装电网网络,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (9)
1.一种保护Shader的方法,其特征在于,包括:
将Shader代码文件拆分成框架代码文件和Shader源代码文件;
将所述Shader源代码文件上传至第一预置目录文件夹;将所述框架代码文件上传至SVN;其中,所述第一预置目录文件夹不在所述SVN上;
对所述Shader源代码文件进行加密,在生成密文文件时,生成用于记录最新版本号的密文版本号文件;
在编译前,若所述密文版本号文件的时间戳与本地版本号文件的时间戳不相同,则获取所述Shader源代码文件,并根据所述Shader源代码文件对Shader进行编译;
编译完成后,删除所述Shader源代码文件。
2.根据权利要求1所述的保护Shader的方法,其特征在于,所述对所述Shader源代码文件进行加密,在生成密文文件时,生成用于记录最新版本号的密文版本号文件,包括:
运用DES加密算法和密钥对所述Shader源代码文件进行加密,在生成密文文件时,生成用于记录最新版本号的密文版本号文件。
3.根据权利要求2所述的保护Shader的方法,其特征在于,所述在编译前,若所述密文版本号文件的时间戳与本地版本号文件的时间戳不相同,则获取所述Shader源代码文件,并根据所述Shader源代码文件对Shader进行编译,包括:
在编译前,若所述密文版本号文件的时间戳与本地版本号文件的时间戳不相同,则向服务器发送所述密钥的请求信号;
在获取所述服务器发送的携带有所述密钥的返回信号后,通过所述密钥和所述密文文件对所述Shader源代码文件进行解密;
在解密成功后,获取所述Shader源代码文件,并根据所述Shader源代码文件对Shader进行编译。
4.根据权利要求3所述的保护Shader的方法,其特征在于,所述在获取所述服务器发送的携带有所述密钥的返回信号后,通过所述密钥和所述密文文件对所述Shader源代码文件进行解密,之后还包括;
将Shader源代码写入第二预置目录文件。
5.根据权利要求3所述的保护Shader的方法,其特征在于,所述在编译前,若所述密文版本号文件的时间戳与本地版本号文件的时间戳不相同,则向服务器发送所述密钥的请求信号,之后还包括:
当获取所述返回信号失败时,继续对所述Shader进行编译;
查找所述Shader源代码文件;
当查找失败时,发出编译报错信号。
6.根据权利要求1所述的保护Shader的方法,其特征在于,所述对所述Shader源代码文件进行加密,在生成密文文件时,生成用于记录最新版本号的密文版本号文件,之后,所述在编译前,若所述密文版本号文件的时间戳与本地版本号文件的时间戳不相同,则获取所述Shader源代码文件,并根据所述Shader源代码文件对Shader进行编译,之前还包括:
将所述密文文件和所述密文版本号文件上传至SVN。
7.一种保护Shader的装置,其特征在于,包括:
拆分单元,用于将Shader代码文件拆分成框架代码文件和Shader源代码文件;
第一上传单元,用于将所述Shader源代码文件上传至第一预置目录文件夹;其中,所述第一预置目录文件夹不在SVN上;
加密及生成单元,用于对所述Shader源代码文件进行加密,在生成密文文件时,生成用于记录最新版本号的密文版本号文件;
编译单元,用于在编译前,若所述密文版本号文件的时间戳与本地版本号文件的时间戳不相同,则获取所述Shader源代码文件,并根据所述Shader源代码文件对Shader进行编译;
删除单元,用于编译完成后,删除所述Shader源代码文件;
第二上传单元,用于将所述框架代码文件上传至所述SVN。
8.根据权利要求7所述的保护Shader的装置,其特征在于,还包括:
发送单元,用于在编译前,若所述密文版本号文件的时间戳与本地版本号文件的时间戳不相同,则向服务器发送密钥的请求信号;
解密单元,用于在获取所述服务器发送的携带有密钥的返回信号后,通过所述密钥和所述密文文件对所述Shader源代码文件进行解密;
编辑单元,用于将Shader源代码写入第二预置目录文件;
查找单元,用于查找所述Shader源代码文件;
报错单元,用于当查找失败时,发出编译报错信号;
分配单元,用于将所述密文文件和所述密文版本号文件上传至SVN。
9.一种保护Shader的设备,其特征在于,所述设备包括处理器以及存储器;
所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;
所述处理器用于根据所述程序代码中的指令执行权利要求1-6任一项所述的保护Shader的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911403512.1A CN111228819B (zh) | 2019-12-30 | 2019-12-30 | 一种保护Shader的方法、装置和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911403512.1A CN111228819B (zh) | 2019-12-30 | 2019-12-30 | 一种保护Shader的方法、装置和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111228819A CN111228819A (zh) | 2020-06-05 |
CN111228819B true CN111228819B (zh) | 2022-03-11 |
Family
ID=70862027
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911403512.1A Active CN111228819B (zh) | 2019-12-30 | 2019-12-30 | 一种保护Shader的方法、装置和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111228819B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111931205A (zh) * | 2020-07-24 | 2020-11-13 | 北京沃东天骏信息技术有限公司 | 一种加密着色器文件的方法和装置 |
CN113742661A (zh) * | 2021-09-07 | 2021-12-03 | 北京闲徕互娱网络科技有限公司 | unity代码安全防护方法、计算机可读介质 |
CN113923474B (zh) * | 2021-09-29 | 2023-06-23 | 北京百度网讯科技有限公司 | 视频帧处理方法、装置、电子设备以及存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109543366B (zh) * | 2017-09-22 | 2021-07-06 | 中国移动通信集团浙江有限公司 | 一种源代码加密方法及其装置和系统 |
CN108256342B (zh) * | 2018-01-12 | 2020-05-12 | 武汉斗鱼网络科技有限公司 | Shader文件的加密方法、装置及解密方法、装置 |
CN108256343B (zh) * | 2018-01-12 | 2020-05-12 | 武汉斗鱼网络科技有限公司 | Shader文件的加密方法、装置及解密方法、装置 |
US10668378B2 (en) * | 2018-01-26 | 2020-06-02 | Valve Corporation | Distributing shaders between client machines for precaching |
-
2019
- 2019-12-30 CN CN201911403512.1A patent/CN111228819B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN111228819A (zh) | 2020-06-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111228819B (zh) | 一种保护Shader的方法、装置和设备 | |
CN111143869B (zh) | 应用程序包处理方法、装置、电子设备及存储介质 | |
CN110457898B (zh) | 基于可信执行环境的操作记录存储方法、装置及设备 | |
CN105993018B (zh) | 移动设备上的内容项加密 | |
CN109284585B (zh) | 一种脚本加密方法、脚本解密运行方法和相关装置 | |
CN110661748B (zh) | 一种日志的加密方法、解密方法及装置 | |
CN105450620A (zh) | 一种信息处理方法及装置 | |
CN110704392B (zh) | 区块链网络的升级方法及装置、存储介质、电子设备 | |
CN109408486B (zh) | 文件发布方法和系统、发布服务器和文件生成装置 | |
CN107066346B (zh) | 一种数据备份方法、数据恢复方法及装置 | |
CN107871066B (zh) | 基于安卓系统的代码编译方法及装置 | |
JP2013061843A (ja) | コンピュータ・ソフトウエア解析システムならびにクライアント・コンピュータ,その動作制御方法およびその動作プログラム | |
CN113065857A (zh) | 支付过程中的数据处理方法、装置、设备、介质及产品 | |
CN108768938B (zh) | 一种网页数据加解密方法及装置 | |
CN114547558A (zh) | 授权方法、授权控制方法及装置、设备和介质 | |
CN112839013A (zh) | 一种密钥传输方法、装置及计算机可读存储介质 | |
CN109543366B (zh) | 一种源代码加密方法及其装置和系统 | |
CN116800535A (zh) | 多台服务器之间相互免密方法及装置 | |
CN117313046A (zh) | 一种代码加固方法、代码加载方法、设备及介质 | |
KR101699176B1 (ko) | Hdfs 데이터 암호화 및 복호화 방법 | |
CN114124469B (zh) | 数据处理的方法、装置和设备 | |
CN113661491A (zh) | 用于加密和更新虚拟盘的方法 | |
CN105978849A (zh) | 客户端的更新方法、系统及客户端与服务器 | |
CN115914264A (zh) | 一种数据的处理方法及装置 | |
CN111881474B (zh) | 基于可信计算环境的私钥管理方法和装置 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |