[发明专利]一种源代码的混淆方法和装置有效
申请号: | 202111568074.1 | 申请日: | 2021-12-21 |
公开(公告)号: | CN113946804B | 公开(公告)日: | 2022-05-20 |
发明(设计)人: | 干长青;邹延迪;李尚锦 | 申请(专利权)人: | 深圳市活力天汇科技股份有限公司 |
主分类号: | G06F21/14 | 分类号: | G06F21/14 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 518057 广东省深圳市南山区粤海街道高新*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 源代码 混淆 方法 装置 | ||
本申请涉及一种源代码的混淆方法和装置。所述方法包括:获取待处理源代码对应的抽象语法树AST;针对所述AST中的每个AST节点,根据该AST节点对应的节点类型,确定该AST节点对应的混淆处理策略,并基于该AST节点对应的混淆处理策略对该AST节点进行混淆处理,得到混淆后的AST;对所述混淆后的AST进行代码还原处理,得到混淆后的源代码。采用本申请可以对源代码进行混淆,从而实现对源代码的保护。
技术领域
本申请涉及计算机技术领域,特别是涉及一种源代码的混淆方法和装置。
背景技术
目前,互联网技术发展迅速,PC端、移动端互联网引用技术呈指数增长,与此同时带来了关键技术代码泄漏问题。对于大多数前端代码, JavaScript代码是由浏览器直接解释执行,可以通过浏览器的开发工具直接查看,导致JavaScript代码非常容易泄露,且易被窃取和篡改。因此,亟需一种源代码的混淆方法。
抽象语法树(Abstract Syntax Tree,AST),是源代码语法结构的一种抽象表示。它以树状的形式表现编程语言的语法结构,树上的每个节点都表示源代码中的一种结构。现有技术中利用抽象语法树原理进行混淆的方案比较简单,混淆后的源代码复杂度较低,易被反混淆。
发明内容
基于此,有必要针对上述技术问题,提供一种源代码的混淆方法和装置。
第一方面,提供了一种源代码的混淆方法,所述方法包括:
获取待处理源代码对应的抽象语法树AST;
针对所述AST中的每个AST节点,根据该AST节点对应的节点类型,确定该AST 节点对应的混淆处理策略,并基于该AST 节点对应的混淆处理策略对该AST节点进行混淆处理,得到混淆后的AST;
对所述混淆后的AST进行代码还原处理,得到混淆后的源代码。
作为一种可选的实施方式,所述根据该AST节点对应的节点类型,确定该AST 节点对应的混淆处理策略,并基于该AST 节点对应的混淆处理策略对该AST节点进行混淆处理,包括:
如果该AST节点对应的节点类型为复杂表达式类型,则该AST 节点对应的混淆处理策略为点操作符替换策略和/或属性递归替换策略,并对该AST节点进行点操作符替换处理和/或属性递归替换处理;
如果该AST节点对应的节点类型为二元表达式类型,则该AST 节点对应的混淆处理策略为方法调用转换策略,并将该AST节点转换为调用表达式类型;
如果该AST节点对应的节点类型为标识符类型或字符串字面量类型,则该AST 节点对应的混淆处理策略为数组引用转换策略,并对该AST节点进行数组引用转换处理;
如果该AST节点对应的节点类型为布尔字面量类型,则该AST 节点对应的混淆处理策略为表达式转换策略,并将该AST节点转换为一元表达式类型;
如果该AST节点对应的节点类型为函数声明类型或函数表达式类型,则该AST 节点对应的混淆处理策略为函数参数去除策略和/或方法引用参数化策略,并对该AST 节点进行函数参数去除处理和/或方法引用参数化处理;
如果该AST节点对应的节点类型为函数声明类型或函数表达式类型或循环语句类型,且方法体为多行方法体,则该AST 节点对应的混淆处理策略为控制流平展策略,并对该AST节点进行控制流平展处理;
如果该AST节点对应的节点类型为复杂表达式类型,且该AST节点的父AST节点对应的节点类型为调用表达式类型,则该AST 节点对应的混淆处理策略为预定义方法调用替换策略和/或构建方法替换策略,并对该AST 节点进行预定义方法调用替换处理和/或构建方法替换处理。
作为一种可选的实施方式,所述对该AST节点进行属性递归替换处理,包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳市活力天汇科技股份有限公司,未经深圳市活力天汇科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202111568074.1/2.html,转载请声明来源钻瓜专利网。