[发明专利]一种编程语言代码动态混淆方法及系统在审
申请号: | 202210575389.7 | 申请日: | 2022-05-25 |
公开(公告)号: | CN114968206A | 公开(公告)日: | 2022-08-30 |
发明(设计)人: | 赵振江;张昊;相金明 | 申请(专利权)人: | 山东国子软件股份有限公司 |
主分类号: | G06F8/30 | 分类号: | G06F8/30;G06F21/14 |
代理公司: | 济南圣达知识产权代理有限公司 37221 | 代理人: | 董雪 |
地址: | 250101 山东省济南市高新*** | 国省代码: | 山东;37 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 编程 语言 代码 动态 混淆 方法 系统 | ||
本公开属于数据保护技术领域,具体涉及一种编程语言代码动态混淆方法及系统,包括:对原始编程语言进行代码压缩,得到第一编程代码;读取所得到的第一编程代码中的字符,构建混淆函数和随机函数;在所构建的混淆函数中追加混淆注释,得到第二编程代码;读取所述第一编程代码中字符的二进制值,基于所构建的随机函数得到混淆代码;将所得到的混淆代码追加到所述第二编程代码中,得到混淆匿名函数;根据所得到的混淆匿名函数和混淆代码,返回所述第一编程代码中的字符,还原原始编程语言。
技术领域
本公开属于数据保护技术领域,具体涉及一种编程语言代码动态混淆方法及系统。
背景技术
本部分的陈述仅仅是提供了与本公开相关的背景技术信息,不必然构成在先技术。
编程语言在处理过程中需要把源代码下载到浏览器端进行解析运行;源代码会直接暴露给用户,如果用户具有编程能力或有攻击意向的人可以通过分析源代码中的代码逻辑查找代码漏洞,从而窃取关键数据,造成经济损失。
据发明人了解,常用的编程语言代码混淆技术有:
(1)编程语言代码压缩技术,将编程语言代码中命名的变量、方法名进行无含义转换,将代码中的换行符、空格、制表符进行去除,降低代码的体积,降低代码的可阅读性;其成本较低,可通过专门的解压缩方式来提高代码的可阅读性;但是,无法避免相同的编程语言代码产生相同的混淆代码。
(2)基于证书的编程语言代码加密技术,使用SSL证书对源代码进行加密,浏览器端使用本地证书进行数据解密;数据在传输过程中是加密状态,如果没有证书,拦截后也无法获取到源代码;但是可通过浏览器提供的控制台工具获取到编程语言代码,存在原始编程语言代码泄露的风险。
(3)基于浏览器混淆SDK的编程语言代码混淆技术,在浏览器端编写混淆代码解码的代码,通过浏览器下载混淆后的代码,解码混淆后的代码后运行;但是无法判断解码混淆代码的代码是否也做了混淆,若解码代码没有做混淆,则仍然存在原始编程语言代码泄露的风险。
发明内容
为了解决上述问题,本公开提出了一种编程语言代码动态混淆方法及系统,增强源代码的变化性和随机性,避免相同的编程语言代码每次产生相同的混淆代码,结合浏览器执行混淆后的第二编程语言代码,提升编程语言代码的执行效率和代码安全性,在混淆后的代码中注入代码有效期,防止代码被盗取后可以无限期的使用。
根据一些实施例,本公开的第一方案提供了一种编程语言代码动态混淆方法,采用如下技术方案:
一种编程语言代码动态混淆方法,包括:
对原始编程语言进行代码压缩,得到第一编程代码;
读取所得到的第一编程代码中的字符,构建混淆函数和随机函数;
在所构建的混淆函数中追加混淆注释,得到第二编程代码;
读取所述第一编程代码中字符的二进制值,基于所构建的随机函数得到混淆代码;
将所得到的混淆代码追加到所述第二编程代码中,得到混淆匿名函数;
根据所得到的混淆匿名函数和混淆代码,返回所述第一编程代码中的字符,还原原始编程语言。
作为进一步的技术限定,通过JavaScript代码压缩技术进行原始编程语言的代码压缩,采用JavaScript代码替换原始编程语言代码中的回车符和制表符,得到第一编程代码。
作为进一步的技术限定,读取所述第一编程代码中所有的字符,根据所读取字符的数量创建混淆函数,基于GUID字符压缩得到8位字符长度的随机字符串,构建随机函数;基于所得到的随机函数,在混淆函数中追加混淆注释,得到第二编程代码。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于山东国子软件股份有限公司,未经山东国子软件股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202210575389.7/2.html,转载请声明来源钻瓜专利网。