发明名称 基于相似度判定的嵌入式操作系统内核版本识别方法
摘要 本发明涉及一种基于相似度判定的嵌入式操作系统内核版本识别方法,含有下列步骤:步骤1:收集不同类型标准嵌入式操作系统的内核版本,得到标准内核的函数结构化特征,并将其存入内核结构化特征库;步骤2:对待识别的嵌入式操作系统内核进行分析,得到待识别内核的函数结构化特征;步骤3:将待识别内核的函数结构化特征按次序与内核结构化特征库中的一个标准内核的函数结构化特征进行匹配;步骤4:待识别内核的函数结构化特征是否已经与标准内核的函数结构化特征都进行了匹配?如是,执行步骤5;如不是,执行步骤3;步骤5:对待识别的嵌入式操作系统内核版本进行识别并做出判定;本发明提高了操作系统内核版本识别的准确性和通用性。
申请公布号 CN102810062B 申请公布日期 2015.04.08
申请号 CN201210194452.9 申请日期 2012.06.14
申请人 中国人民解放军信息工程大学 发明人 蒋烈辉;尹青;谢耀滨;何红旗;刘铁铭;常瑞;张平;李继中
分类号 G06F9/44(2006.01)I 主分类号 G06F9/44(2006.01)I
代理机构 郑州大通专利商标代理有限公司 41111 代理人 陈大通
主权项 一种基于相似度判定的嵌入式操作系统内核版本识别方法,其特征是:含有下列步骤:步骤1:收集不同类型标准嵌入式操作系统的内核版本,通过正向编译、反汇编处理,得到标准内核函数序列,从标准内核函数序列中提取N个标准内核的函数结构化特征,将N个标准内核的函数结构化特征存入内核结构化特征库,N为大于等于1的自然数;步骤2:对待识别的嵌入式操作系统内核进行反汇编分析,得到待识别内核函数序列,从待识别内核函数序列中提取相应的待识别内核的函数结构化特征;步骤3:使用内核函数结构化匹配算法,将待识别内核的函数结构化特征按次序与内核结构化特征库中的一个标准内核的函数结构化特征进行匹配,并根据匹配结果计算出两者的相似度;步骤4:判断待识别内核的函数结构化特征是否已经与内核结构化特征库中的N个标准内核的函数结构化特征都进行了匹配,如果是,执行步骤5;如果不是,执行步骤3;步骤5:待识别内核的函数结构化特征与内核结构化特征库中的N个标准内核的函数结构化特征都进行匹配后,得到N个相似度,对N个相似度进行排序,根据各相似度的排名及分布情况对待识别的嵌入式操作系统内核版本进行识别并做出判定;标准内核的函数结构化特征和待识别内核的函数结构化特征均是根据函数控制流图CFG得到的,标准内核的函数结构化特征和待识别内核的函数结构化特征均由函数结构特征和基本块结构特征组成,其中,函数结构特征描述具体函数的结构特征,基本块结构特征描述函数内部基本块的结构特征;步骤3中,内核函数结构化匹配算法记作f<sub>match</sub>(Q<sub>tar</sub>,Q<sub>std</sub>),其中,Q<sub>std</sub>为标准内核函数序列,Q<sub>tar</sub>为待识别内核函数序列,内核函数结构化匹配算法的步骤如下:步骤3.1:给函数队列Q、匹配函数队列Q<sub>match</sub>赋值为空;步骤3.2:获取Q<sub>tar</sub>中的待识别内核的函数结构化特征;步骤3.3:如果Q<sub>std</sub>非空时,执行步骤3.4,否则转步骤3.11;步骤3.4:从Q<sub>std</sub>中按次序取出一个函数f<sub>i</sub>;步骤3.5:对函数f<sub>i</sub>和待识别内核的函数结构化特征进行函数级结构化匹配,得到匹配成功的函数队列Q;步骤3.6:如果函数队列Q非空,则执行步骤3.7,否则转步骤3.3;步骤3.7:从函数队列Q中按次序取出一个函数q<sub>j</sub>;步骤3.8:对函数q<sub>j</sub>和函数f<sub>i</sub>进行基本块级结构化匹配,如果匹配成功,执行步骤3.9,否则转步骤3.6;步骤3.9:将函数q<sub>j</sub>从Q<sub>std</sub>和Q<sub>tar</sub>中删除;步骤3.10:将函数q<sub>j</sub>加入到匹配函数队列Q<sub>match</sub>中;步骤3.11:输出匹配函数队列Q<sub>match</sub>;函数级结构化匹配根据两个内核的函数结构特征来计算,两个内核的函数结构特征分别表示如下:FunSig′&lt;param<sub>F</sub>′,idegree<sub>F</sub>′,block′,edge′,callee<sub>F</sub>′&gt;,FunSig″&lt;param<sub>F</sub>″,idegree<sub>F</sub>″,block″,edge″,callee<sub>F</sub>″&gt;,其中,param<sub>F</sub>′、param<sub>F</sub>″表示函数参数个数,idegree<sub>F</sub>′、idegree<sub>F</sub>″表示函数入度,block′、block″表示函数控制流图CFG中基本块个数,edge′、edge″表示函数控制流图CFG中边数,callee<sub>F</sub>′、callee<sub>F</sub>″表示函数的子调用数;计算公式为:<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><mi>d</mi><mo>=</mo><msqrt><msup><mrow><mo>(</mo><msup><msub><mi>param</mi><mi>F</mi></msub><mo>&prime;</mo></msup><mo>-</mo><msup><msub><mi>param</mi><mi>F</mi></msub><mrow><mo>&prime;</mo><mo>&prime;</mo></mrow></msup><mo>)</mo></mrow><mn>2</mn></msup><mo>+</mo><msup><mrow><mo>(</mo><msup><msub><mi>idegree</mi><mi>F</mi></msub><mo>&prime;</mo></msup><mo>-</mo><msup><msub><mi>idegree</mi><mi>F</mi></msub><mrow><mo>&prime;</mo><mo>&prime;</mo></mrow></msup><mo>)</mo></mrow><mn>2</mn></msup><mo>+</mo><msup><mrow><mo>(</mo><msup><mi>block</mi><mo>&prime;</mo></msup><mo>-</mo><msup><mi>block</mi><mrow><mo>&prime;</mo><mo>&prime;</mo></mrow></msup><mo>)</mo></mrow><mn>2</mn></msup><mo>+</mo><msup><mrow><mo>(</mo><msup><mi>edge</mi><mo>&prime;</mo></msup><mo>-</mo><msup><mi>edge</mi><mrow><mo>&prime;</mo><mo>&prime;</mo></mrow></msup><mo>)</mo></mrow><mn>2</mn></msup><mo>+</mo><msup><mrow><mo>(</mo><msup><msub><mi>callee</mi><mi>F</mi></msub><mo>&prime;</mo></msup><mo>-</mo><msup><msub><mi>callee</mi><mi>F</mi></msub><mrow><mo>&prime;</mo><mo>&prime;</mo></mrow></msup><mo>)</mo></mrow><mn>2</mn></msup></msqrt></mrow>]]></math><img file="FDA0000634709780000021.GIF" wi="1999" he="109" /></maths>当d=0时,两个函数具有相似的结构;步骤3中的相似度计算方法为:相似度=q/m,其中,q为匹配的函数个数,m为目标内核的函数总个数。
地址 450002 河南省郑州市金水区俭学街7号