主权项 |
一种基于虚拟执行模式的Flash漏洞检测方法,其特征在于,包括以下步骤:步骤1:将待检测的Flash文件进行反编译,得到ActionScript代码;步骤2:对ActionScript代码进行单词扫描及词法分析,即将ActionScript代码转换成单词流,并对每个单词的类型进行分析,单词的类型包括保留字、标识符、符号、数字;步骤3:构建生成树:以生成树存储ActionScript代码:生成树中每个结点用于存储ActionScript的一行语句,若某结点具有子结点,则每个子结点存储的ActionScript语句是其父节点的ActionScript语句的子语句;步骤4:对每个结点中的语句进行结构分析,得到类结构信息,其中语句结构包括类定义语句、类成员变量定义语句及类的成员函数定义语句;在分析ActionScript代码结构时,对代码逐行进行扫描,若发现关键字“class”则为类定义语句,关键字“function”则为类的成员函数定义语句;若找到关键字“var”或“const”则为类成员变量定义语句;标记所有函数的状态为“未执行”;步骤5:基于类结构信息生成虚拟执行流程,并将虚拟执行流程放入虚拟执行流程栈中;步骤6:漏洞检测过程:从虚拟执行流程栈依次取出一个流程并执行,将该流程中调用过的函数标记为“已执行”状态,在流程执行过程中进行漏洞规则匹配,如果匹配成功,则提示存在漏洞,否则执行下一个从虚拟执行流程栈取出的流程;直到最后一个流程执行完成;步骤7:输出漏洞检测结果,检测结束。 |