当前位置: 首页 > 专利查询>浙江大学专利>正文

一种基于汇编程序构造语义流程图的方法技术

技术编号:2827142 阅读:282 留言:0更新日期:2012-04-11 18:40
本发明专利技术属于软件逆向工程技术领域,主要是实现了一种基于特定硬件平台(C166平台)的,由汇编程序构造语义流程图的方法。本发明专利技术要解决现有反编译工具存在的缺陷,提供一种基于汇编程序构造语义流程图的方法,其特征在于:该方法包括:将所有汇编指令分为关键流程指令与非关键流程指令两种类型;通过核心语句判定和相邻操作数判定,将汇编指令聚合成不同的汇编指令块;由汇编指令块生成流程图语义块;将流程图语义块进行连线,绘制流程图。本发明专利技术简化了复杂流程图在作图时的难度;汇编指令的执行顺序也一目了然,大大提高了阅读汇编代码的效率。这种效率的提升在分析大量汇编代码时尤其明显。

【技术实现步骤摘要】

本专利技术属于软件逆向工程
,主要是实现了一种基于特定硬件平台(C166平台)的,由汇编程序构造语义流程图的方法。技术背景软件逆向工程是分析已有的程序,寻求比源代码更高级的抽象表现形式。 一般认为,凡是在软件生命周期内的,将软件某种形式的描述转换为更抽象形 式的活动都可称为逆向工程。语义流程图是人们对解决问题的方法、思路或算法的一种描述。由于语义 流程图具有符号规划、画法简单、结构清晰、逻辑性强、便于描述及容易理解 的特点,它在描述程序流程的方面具有十分广泛的运用。由于汇编语言依赖底层硬件,功能抽象层次极低导致了其可读性差的特点, 通过一定的技术手段将可读性差的汇编代码转化为可读性好的语义流程图,有 利于提高开发效率,降低代码维护成本。目前,市场上占有率较高的反编译工具主要有SHUDepb,jad,Reflactor等。 这些反编译工具绝大多数都是针对特定的高级语言,如VB, C#, Delphi, Java等 进行反编译。而对于极其灵活的、多用于编写系统级程序的C语言的反编译工 作,目前还没有非常成熟的工具。尤其是对于某些特定的处理芯片开发的汇编 语言,如C166,HCS12等平台的汇编语言,将其反编译成C语言的难度更大。 同时,多数反编译工具的分析结果不以语义流程图形式展示,仍然没有解决可 读性较差的问题。
技术实现思路
本专利技术要解决现有反编译工具存在的缺陷,提供一种简单,快速的基于C166硬件平台的汇编程序构造语义流程图的方法。本专利技术采用的技术方案为 ,其 特征在于该方法包括将所有汇编指令分为关键流程指令与非关键流程指令两种类型; 通过核心语句判定和相邻操作数判定,将汇编指令聚合成不同的汇编指令 块;由汇编指令块生成流程图语义块;将流程图语义块进行连线,绘制流程图。进一步的,所述方法基于C166硬件平台。进一步的,所述核心语句指能够影响C166平台上PSW寄存器,并具有实 际计算能力的指令;所述相邻操作数判定指以核心语句为中心,同时顺序和逆 序搜索具有与核心语句相同操作数的非核心语句,直至搜索到有新的核心语句 或无相邻的操作数为止,将遍历到的汇编指令聚合成不同的汇编指令块。更进一步的,所述非核心语句包括赋值,读取等指令。进一步的,具体包括如下步骤1) 建立C166跳转、函数调用返回类指令集合J;2) 搜索C166汇编程序,将属于指令集合J的C166指令加入到关键流程 指令集合K;3) 根据K中跳转类指令的操作数,计算这些跳转指令的目标地址;4) 读取目标地址的指令,加入关键流程指令集合K;5) 对于K中的每一条跳转类指令C (不包括跳转目标指令),执行以下处 理判断是否为无条件跳转指令(跳转指令的第一操作数为cc一UC),若条件成 立,则将指令C加入到已处理指令集合S,并进入7);若条件不成立,则记录 决定跳转与否的C166状态寄存器(PSW)的状态,并逆序搜索与C最近的,有 能力改变该PSW的核心语句X;6) 记录X的操作数,顺序和逆序遍历具有操作数传递关系的非核心语句, 直至遇到新的核心语句,或无相邻操作数,并将所有遍历到的语句加入已处理指令集合S,所述传递关系定义如下在顺序搜索时,该参数与顺序下一句源 操作数相同;逆序搜索时,该参数与逆序上一句目标操作数相同;7) 根据汇编指令块的核心语句确定语义流程图块的语义,生成对应的语义 流程图块;8) 对于尚未处理的指令,从目标汇编程序起始位置顺序搜索核心语句X, 对于每次遇到的核心指令,重复6的步骤,并将遍历到的汇编指令聚合成汇编 指令块,生成语义流程图块;9) 对于余下的指令,每一条汇编指令生成一个语义流程图块;10) 将语义流程图块进行连线,绘制流程图。 下面对本专利技术作进一步的描述本专利技术所采用的技术方法将所有C166指令分为两种类型关键流程指令 与非关键流程指令。区分的标志在于前者能够影响程序的顺序执行流程(包括 被这些指令影响的其它指令),而后者则不能。在默认状态下,执行完一条C166 指令后,将继续执行与其相邻的下一条指令, 一旦遇到跳转类指令,则将根据 跳转类指令的操作数计算目标跳转地址。本专利技术将使用这类跳转指令的C166 语句与跳转目标语句定义为关键流程语句,而将其它语句定义为非关键流程语 句。再根据关键流程语句提取整个程序的流程图框架,即在关键流程语句处有 流程图流向的转出或转入,而在非关键流程语句处只有流程的顺序转移。然后,需要对流程图进行语义生成。从高级语言编译生成汇编语言时,同 一条高级语言编译后得到的汇编代码是相邻的。同理,在反编译时需要搜索相 邻的汇编代码,根据一定原则判断该部分代码是否由一条高级语言编译生成。 判定步骤主要包括两步核心语句判定与相邻操作数判定。核心语句判定指挑 选汇编语言中具有实际运算功能的指令(跳转类指令除外),如加、减、乘、移 位操作等;相邻操作数判定指以核心语句为中心,同时顺序和逆序搜索具有与 核心语句相同操作数的非核心语句,如赋值,读取等,直至搜索到有新的核心 语句,或无相邻的操作数为止。然后将搜索到的汇编指令块进行语义聚合,生成流程图语义块。本专利技术具有如下优点1、 本专利技术把汇编指令分为关键流程指令与非关键流程指令,对应地将流 程图的结构划分为跳转执行结构与顺序执行结构,简化了复杂流程图在作 图时的难度。2、 本专利技术通过特定的语义分析方法,将可读性差的汇编指令聚合成可读 性好的语义流程图块,汇编指令的执行顺序也一目了然,大大提高了阅读 汇编代码的效率。这种效率的提升在分析大量汇编代码时尤其明显。附图说明图1C166指令集划分示意图。 图2相邻操作数判定流程图。 图3相邻操作数判定示例。 图4语义生成模块组成示意图。 图5判断型跳转指令语义生成流程图。 图6判断型跳转指令语义示例。 图7强制跳转指令语义生成流程图。 图8运算类指令语义生成流程图。具体实施方式下面结合附图对专利技术作进一步介绍。图1指出了本专利技术将C166平台汇编指令划分为多个集合的情况。首先将 C166指令集划分为关键流程语句与非关键流程语句,再将非关键流程语句划分 为核心语句与非核心语句。关键流程语句与非关键流程语句划分的标准为将 所有跳转、函数调用返回类指令以及跳转目标指令划入关键流程语句,其余都 归入非关键流程语句。跳转、函数调用返回类指令包括JB, JNB, JBC, JBNS, JMPA, JMPS, JMPI, JMPR, CALLA, CALLI, CALLR, CALLS, PCALL, TRAP, RET, RETS, RETP,RETI。其次将非关键语句划分为核心语句与非核心语句,两者划分的标准为核心语句为能够影响C166平台上PSW寄存器,并具有实际计算能力的指令,其 余都归入非核心语句。C166平台的核心语句包括计算指令(ADD, ADDB, ADDC, ADDCB, SUB, SUBB, SUBC, SUBCB, MUL, MULU, DIV, DIVL, DIVLU, DIVU, CPL, CPLB, NEG, NEGB,)、逻辑指令(AND, ANDB, OR, ORB, XOR, XORB),布尔位操作指 令(BCLR, BSET, BMOV, BMOVN, BAND, BOR, BXO本文档来自技高网...

【技术保护点】
一种基于汇编程序构造语义流程图的方法,其特征在于:该方法包括:将所有汇编指令分为关键流程指令与非关键流程指令两种类型;通过核心语句判定和相邻操作数判定,将汇编指令聚合成不同的汇编指令块;由汇编指令块生成流程图语义块;将流程图语义块进行连线,绘制流程图。

【技术特征摘要】
1.一种基于汇编程序构造语义流程图的方法,其特征在于该方法包括将所有汇编指令分为关键流程指令与非关键流程指令两种类型;通过核心语句判定和相邻操作数判定,将汇编指令聚合成不同的汇编指令块;由汇编指令块生成流程图语义块;将流程图语义块进行连线,绘制流程图。2. 根据权利要求l所述的一种基于汇编程序构造语义流程图的方法,其特征在 于所述方法基于C166硬件平台。3. 根据权利要求l所述的基于汇编程序构造语义流程图的方法,其特征在于所述核心语句指能够影响C166平台上PSW寄存器,并具有实际计算能力的指 令;所述相邻操作数判定指以核心语句为中心,同时顺序和逆序搜索具有与核 心语句相同操作数的非核心语句,直至搜索到有新的核心语句或无相邻的操作 数为止,将遍历到的汇编指令聚合成不同的汇编指令块。4. 根据权利要求3所述的基于汇编程序构造语义流程图的方法,其特征在于 所述非核心语句包括赋值,读取等指令。5. 根据权利要求l所述的基于汇编程序构造语义流程图的方法,其特征在于 具体包括如下步骤1) 建立C166跳转、函数调用返回类指令集合J;2) 搜索C166汇编程序,将属于指令集合J的C166指令加入到关键流程指 ...

【专利技术属性】
技术研发人员:赵民德吴朝晖胡博黄凯赵坚吕攀
申请(专利权)人:浙江大学
类型:发明
国别省市:86[中国|杭州]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1