主权项 |
一种基于树结构的密码算法逻辑表达式识别方法,其特征是:通过下述步骤识别密码算法及密码函数:1)通过研究不同密码算法的实现原理,抽取出密码算法实现中所使用的逻辑表达式LE,采用树形结构存储到密码算法逻辑表达式特征数据库T<sub>character</sub>中,采用模式树构建算法PTCA构建密码算法逻辑表达式特征数据库T<sub>character</sub>,具体流程如下:步骤1.1:扫描逻辑表达式LE,记录操作优先级最小的操作符OP<sub>min</sub>,创建特征树内部结点,并挂载在其父结点的相应位置,并把OP<sub>min</sub>保存在内部结点中,OP<sub>min</sub>把LP分成左、右两个部分;步骤1.2:左部若为操作数,则挂载在父结点相应位置;若为LE,则调用PTCA算法进行处理;步骤1.3:右部若为操作数,则挂载在父结点相应位置;若为LE,则调用PTCA算法进行处理;步骤1.4:遍历完所有逻辑操作符,算法结束;2)对待识别的目标程序进行反汇编分析,得到目标程序的函数序列P<F<sub>1</sub>,F<sub>2</sub>…F<sub>n</sub>>,对函数F<sub>i</sub>进行基本块内数据流分析,构建仅含有逻辑操作的抽象语法树集合F<sub>i</sub><T<sub>1</sub>,T<sub>2</sub>…T<sub>m</sub>>,即目标模式树;其中i标识一个函数,m是抽象语法树个数,n是函数个数;3)根据密码算法逻辑表达式特征数据库T<sub>character</sub>,使用树结构的匹配算法M(T<sub>target</sub>,T<sub>character</sub>),对目标程序的函数F<sub>i</sub>抽象语法树集合进行匹配,并记录匹配结果;4)重复第3步,直到所有函数完成匹配;5)对匹配结果进行梳理,标注的信息主要有:函数名、密码算法名称、逻辑表达式的内容、LE在文件中的偏移地址。 |