代码解混淆方法、装置、电子设备及计算机可读存储介质
摘要文本
本发明公开了一种代码解混淆检测方法、装置、电子设备及计算机可读存储介质,根据抽象语法树分析各个节点的混淆条件,然后针对不同的解混淆条件采用不同的解混淆策略进行解混淆。本发明的解混淆准确率高,采用的处理方式是语义上的等价替换,解混淆的结果并不会引入任何原本不存在的恶意特征,且基于本发明的混淆方法的进行解混淆的代码进行webshell检测时,大幅提升了webshell检出率。
申请人信息
- 申请人:浙江大学
- 申请人地址:310058 浙江省杭州市西湖区余杭塘路866号
- 发明人: 浙江大学
专利详细信息
| 项目 | 内容 |
|---|---|
| 专利名称 | 代码解混淆方法、装置、电子设备及计算机可读存储介质 |
| 专利类型 | 发明授权 |
| 申请号 | CN202311663103.1 |
| 申请日 | 2023/12/6 |
| 公告号 | CN117349803B |
| 公开日 | 2024/3/19 |
| IPC主分类号 | G06F21/14 |
| 权利人 | 浙江大学 |
| 发明人 | 李响; 于虎圣; 王箭; 陈焰 |
| 地址 | 浙江省杭州市西湖区浙大路38号 |
专利主权项内容
来自马-克-数-据 。1.一种代码解混淆方法,其特征在于,包括:生成目标代码的抽象语法树;针对所述的抽象语法树中的每一个节点,在当前节点满足解混淆条件中的第二解混淆条件时,将抽象语法树中函数名位置的子树替换为echo语句;将替换后的抽象语法树还原为代码并输入到解释器进行解析得到函数名的真实值;以所述得到的函数名真实值作为该函数调用表达式节点对应函数名处节点的取值构建抽象语法树作为当前节点的解混淆子树;在所生成的目标代码的抽象语法树中将该当前节点的混淆子树更新为所述解混淆子树,并根据所述更新后的抽象语法树生成目标代码的解混淆代码;其中,所述第二解混淆条件为当前节点是函数调用表达式节点,且对应的函数名处节点不为常量,所述当前节点的混淆子树为所述抽象语法树中抽取以当前节点为根的子树;所述解混淆条件包括第一解混淆条件和第三解混淆条件,在当前节点满足第一解混淆条件或第三解混淆条件时,采用对应的解混淆策略对当前节点进行解混淆,其中,所述第一解混淆条件为当前节点是函数调用表达式节点,且对应的函数名处的节点为常量,且该常量为用于调用其他函数的函数的函数名,对应的第一解混淆策略为:以该函数调用表达式节点对应被调用的函数的函数名处节点的取值作为新的函数调用表达式节点的函数名处节点的取值,以该函数调用表达式节点对应被调用的函数的参数处节点取值作为新的函数调用表达式节点的函数参数处节点的取值构建抽象语法树作为当前节点的解混淆子树;所述第三解混淆条件为当前节点为eval表达式节点,且eval表达式节点对应的参数处节点的真实值是非空字符串;对应的第三解混淆策略为:采用解释器对该eval表达式节点对应的参数处节点的值进行解析得到参数的真实值,构建该参数取值的抽象语法树作为该eval表达式节点的解混淆子树。