一种基于教育系统的源码保护方法及电子设备与流程

文档序号:17003859发布日期:2019-03-02 01:56阅读:123来源:国知局
本发明涉及计算机
技术领域
:,尤其涉及一种基于教育系统的源码保护方法及电子设备。
背景技术
::现有技术中,对于一些源码,例如游戏源码,其安全性尤为重要。如果源码未加密,则容易被盗用、破解或抄袭,造成非常严重的后果。而现有的源码很容易通过浏览器控制台查看到游戏源码,或者通过手动输出日志或断点调试来进行破解等。因此,现有技术还有待于改进和发展。技术实现要素:鉴于上述现有技术的不足,本发明的目的在于提供一种基于教育系统的源码保护方法及电子设备,旨在解决现有技术中源码容易被破解、抄袭或盗用等问题。本发明的技术方案如下:一种基于教育系统的源码保护方法,其中,包括步骤:使用gulp工具对代码进行混淆加密;将日志输出函数改写为空函数,并将日志输出的对象属性改写为不可配置及不可修改;在代码中添加可运行的域名,监听当前域名是否为可运行的域名,若否则锁死浏览器;禁止打开控制台;监听控制台是否被强行打开,若是则抛出错误,并记录错误数量,当错误数量达到阈值时则锁死浏览器。所述的基于教育系统的源码保护方法,其中,先通过改写console对象和alert对象,筛选出所有的日志输出函数;再将日志输出函数改写为空函数,并将日志输出的对象属性改写为不可配置及不可修改。所述的基于教育系统的源码保护方法,其中,所述禁止打开控制台的方式包括:禁止鼠标右键事件。所述的基于教育系统的源码保护方法,其中,所述禁止打开控制台的方式还包括:取消打开控制台的组合键位的事件监听。所述的基于教育系统的源码保护方法,其中,在控制台被强行打开时,检测是否发生断点调试。所述的基于教育系统的源码保护方法,其中,若发生断点调试,则自动抛出错误。所述的基于教育系统的源码保护方法,其中,开启https协议,防止抓包。一种电子设备,其中,包括:处理器,适于实现各指令,以及存储设备,适于存储多条指令,所述指令适于由处理器加载并执行:使用gulp工具对代码进行混淆加密;将日志输出函数改写为空函数,并将日志输出的对象属性改写为不可配置及不可修改;在代码中添加可运行的域名,监听当前域名是否为可运行的域名,若否则锁死浏览器;禁止打开控制台;监听控制台是否被强行打开,若是则抛出错误,并记录错误数量,当错误数量达到阈值时则锁死浏览器。一种非易失性计算机可读存储介质,其中,所述非易失性计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行时,可使得所述一个或多个处理器执行所述的基于教育系统的源码保护方法。一种计算机程序产品,其中,计算机程序产品包括存储在非易失性计算机可读存储介质上的计算机程序,计算机程序包括程序指令,当程序指令被处理器执行时,使所述处理器执行所述的基于教育系统的源码保护方法。有益效果:本发明通过对代码进行混淆处理,使生产环境的代码完全失去可读性。在用户强行调用浏览器控制台时,程序持续抛出错误,自动销毁进程。重新改写底层代码,将输出日志(函数)的输出内容都改为空,利用输出日志也无法查看任何有效信息。统计断点调试抛出的错误数量,如果达到阈值,则直接锁死浏览器。同时还锁定代码的可运行域名,确保域名安全。附图说明图1为本发明一种基于教育系统的源码保护方法较佳实施例的流程图。图2为本发明一种电子设备较佳实施例的结构框图。具体实施方式本发明提供一种基于教育系统的源码保护方法及电子设备,为使本发明的目的、技术方案及效果更加清楚、明确,以下对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。请参阅图1,图1为本发明一种基于教育系统的源码保护方法较佳实施例的流程图,如图所示,其包括步骤:s1、使用gulp工具对代码进行混淆加密;s2、将日志输出函数改写为空函数,并将日志输出的对象属性改写为不可配置及不可修改;s3、在代码中添加可运行的域名,监听当前域名是否为可运行的域名,若否则锁死浏览器;s4、禁止打开控制台;s5、监听控制台是否被强行打开,若是则抛出错误,并记录错误数量,当错误数量达到阈值时则锁死浏览器。上述步骤前的标号仅为方便说明,并不代表对本发明的执行顺序进行限定,显然,其还可以按照其他执行顺序进行执行,这些变换都属于本发明的保护范围。在步骤s1中,使用gulp工具对代码进行混淆加密。首先按如下方式安装gulp:1、全局安装gulp;2、作为项目的开发依赖安装;3、在项目根目录下创建一个名为gulpfile.js的文件;4、运行gulp。混淆加密的处理即包含了混淆又包含了加密。其中的混淆是对函数中的局部变量重新命名,使得脚本比较难以阅读。即使使用格式化工具对混淆后脚本进行格式化,因为局部变量随机化了,也比较难以阅读,但依然容易理解。常用的混淆方式有:拆分字符串、拆分数组、增加废代码等等,本质上就是改变代码字符串的抽象语法树的结构。其中的加密与混淆不同,采用加密算法,对脚本进行加密,使得脚本从根本上很难阅读理解。即使使用格式化工具对加密后脚本进行格式化,从根本上也很难阅读理解。从而保护代码的安全。本步骤中的加密是指可逆编码,是狭义的加密,可借助一些常用工具,例如packer、bcrypt等等。另外,本发明还开启https协议,防止抓包。用https防止抓包明文后,使用gulp加入代码混淆,使生产环境的代码完全失去可读性。在所述步骤s2中,将日志输出函数改写为空函数,并将日志输出的对象属性改写为不可配置及不可修改。具体地,可先通过改写console对象和alert对象,筛选出所有的日志输出函数;再将日志输出函数改写为空函数,并将日志输出的对象属性改写为不可配置及不可修改,即只读。console对象主要包括如下方法:1、console.log(),console.debug(),console.info()console.log方法用于在控制台输出信息。可以接受多个参数,逗号分隔。可自动在每次输出的结尾,添加换行符。没有返回值则返回undefined。如果第一个参数是格式字符串(使用了格式占位符),console.log方法将依次用后面的参数替换占位符,然后再进行输出。console.debug()与console.info()和console.log方法类似。2、console.assert()接收至少两个参数,第一个参数的值或返回值为false的时候,将会在控制台上抛出一个异常并将其余参数作为异常描述输出。3、console.count()console.count()方法用于计数,输出它被调用了多少次。console.count()方法里面可以传入一个字符串作为参数,作为标签,对执行次数进行分类。4、console.clear()console.clear()用于清空控制台内容。5、console.dir()console.dir()方法用来对一个对象进行检查,并以易于阅读和打印的格式显示。6、console.error(),console.warn()console.error()和console.warn()方法分别用于输出错误和警告信息,用法和常见的console.log方法一样,不同点在于输出的表现形式。7、console.table()console.table()方法可以将传入的对象或数组这些复合数据以表格形式输出。8、console.time(),console.timeend()console.time()和console.timeend()方法用于计算一个操作的执行的时间,console.time()是开始,console.timeend()是结束。可以传一个参数,参数为计时器的名称。9、console.group(),console.groupcollapsed(),console.groupend()console.group()和console.groupcollapsed()这两个方法用于将显示的信息分组,可以把信息进行折叠和展开。他们都可以传递一个参数,参数默认是分组名。区别就是console.group()是默认展开的,而console.groupcollapsed()默认是收起的。10、console.profile(),console.profileend()console.profile()和console.profileend()方法用来新建一个性能测试器,可以评估某段代码的性能,可以传一个参数,为生成的性能测试器的名字。11、console.trace()console.trace()方法用来追踪函数的调用过程。在复杂的架构中可以查找到对应的调用路径。alert对象可用于输出字符串类的提示或警告信息,它的参数只有1个,多余的会被丢弃,若要输出多项内容,需将输出的各项内容整理(如按一定规则整合,"aaa"+":"+"bbbb"+":"+"cccc")成一个。本发明重新改写底层代码,将日志输出函数的输出内容都改为空,在用户强行调用浏览器控制台时,利用输出日志也无法查看任何有效信息。在所述步骤s3中,在代码中添加可运行的域名,监听当前域名是否为可运行的域名,若否则锁死浏览器。其中的域名也包括子域名。通过上述步骤,锁定代码的可运行域名,如果在其他域名粘贴复制运行混淆后的代码,则使用爆栈信息直接锁死浏览器。在所述步骤s4中,禁止打开控制台。通过打开控制台,可以查看到游戏源码,如果源码未加密,则会直接被盗用。本发明中禁止打开控制台,从而防止源码被盗用。进一步,所述禁止打开控制台的方式包括:禁止鼠标右键事件。即用户无法通过点击鼠标右键来打开控制台,所以可防止控制台通过鼠标右键事件被打开。因为,一般来说,通过点击鼠标右键,点击其中的“审查元素”即可打开控制台,打开后可聚焦到当前元素,所以本发明需要改写鼠标右键功能,使用户无法使用审查元素。当然,在某些比较新的chrome内核浏览器中“审查元素”替换为了“检查”,其原理相同,同样可通过上述方法来防止打开控制台。进一步,所述禁止打开控制台的方式还包括:取消打开控制台的组合键位的事件监听。即用户无法通过组合键位来打开控制台,所以可防止控制台通过组合键位的方式被打开。当然,如果所述控制台被设置为单个键位即可打开,那么也需要取消打开控制台的单个键位的事件监听,以防止通过单个键位打开所述控制台。通过上述两种方式的结合,可确保控制台大部分情况都无法被打开。当然,控制台可能还有其他打开方式,所以可能难以避免地被强行打开。针对这种被强行打开的情况,可在步骤s5中按照后续的处理方式进行处理。在所述步骤s5中,监听控制台是否被强行打开,若是则抛出错误,并记录错误数量,当错误数量达到阈值时则锁死浏览器。如果控制台被强行打开,会直接抛出错误,使程序无法正常运行,无法查看调试结果。并且还记录错误数量,根据错误数量的值确定是否锁死浏览器。本发明中,如果错误数量达到阈值,则使用爆栈信息直接锁死浏览器。如果没有达到错误数量,则继续抛出错误。进一步,在控制台被强行打开时,检测是否发生断点调试。如果发生断点调试,则自动抛出错误。因为如果发生断点调试,则可能是用户通过暴力破解,所以抛出错误,并需要统计抛出的错误数量,如果达到阈值,视为用户尝试暴力破解,使用爆栈信息直接锁死浏览器。所述阈值具体可根据实际情况进行调整,但本发明优选的阈值为10,即当错误数量达到10时,自动锁死浏览器,而错误数量未达到10时,则继续等待,并持续监测错误数量是否达到10,在达到10时,锁死浏览器。也就是说,为了防止断点调试,需要尝试阻止用户打开浏览器的控制台,在用户强行调用浏览器控制台时,程序持续抛出错误,自动销毁进程。本发明还提供一种电子设备10,如图2所示,其包括:处理器110,适于实现各指令,以及存储设备120,适于存储多条指令,所述指令适于由处理器110加载并执行:使用gulp工具对代码进行混淆加密;将日志输出函数改写为空函数,并将日志输出的对象属性改写为不可配置及不可修改;在代码中添加可运行的域名,监听当前域名是否为可运行的域名,若否则锁死浏览器;禁止打开控制台;监听控制台是否被强行打开,若是则抛出错误,并记录错误数量,当错误数量达到阈值时则锁死浏览器。所述处理器110可以为通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)、单片机、arm(acornriscmachine)或其它可编程逻辑器件、分立门或晶体管逻辑、分立的硬件组件或者这些部件的任何组合。还有,处理器还可以是任何传统处理器、微处理器或状态机。处理器也可以被实现为计算设备的组合,例如,dsp和微处理器的组合、多个微处理器、一个或多个微处理器结合dsp核、任何其它这种配置。存储设备120作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本发明实施例中的基于教育系统的源码保护方法对应的程序指令。处理器通过运行存储在存储设备中的非易失性软件程序、指令以及单元,从而执行基于教育系统的源码保护方法的各种功能应用以及数据处理,即实现上述方法实施例。关于上述电子设备10的具体技术细节在前面的方法中已有详述,故不再赘述。本发明还提供一种非易失性计算机可读存储介质,所述非易失性计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行时,可使得所述一个或多个处理器执行所述的基于教育系统的源码保护方法。本发明还提供一种计算机程序产品,计算机程序产品包括存储在非易失性计算机可读存储介质上的计算机程序,计算机程序包括程序指令,当程序指令被处理器执行时,使所述处理器执行所述的基于教育系统的源码保护方法。应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1