一种反编译数据流分析中的寄存器清除方法及系统技术方案

技术编号:8161433 阅读:292 留言:0更新日期:2013-01-07 19:28
本发明专利技术公开了一种反编译数据流分析中的寄存器清除方法及系统,可以读取代码文件中的所有函数语句并对所读取的函数语句依次进行判断,当函数语句中包括寄存器名称时,构建二叉树并将该函数语句输入到所述二叉树中;进一步对包含有寄存器名称的函数语句依次进行判断,当该函数语句中包括二叉树右孩子结束标识时,对构建的二叉树进行消元处理以去除所述二叉树中的寄存器名称,生成最简二叉树,根据所述最简二叉树生成高级语言的函数语句。由于可以一次将所有语句进行读取,因此本发明专利技术不用再多次进行读写。同时,由于根据读取的函数语句构建了二叉树并对二叉树进行消元处理,因此可以很方便、快捷的得到不包含寄存器名称的函数语句,执行效率高。

【技术实现步骤摘要】

本专利技术涉及反编译
,特别是涉及ー种反编译数据流分析中的寄存器清除方法及系统
技术介绍
反编译技术作为计算机逆向技术中不可或缺的一部分,在分析系统漏洞、软件安全以及病毒木马等领域得到了广泛应用。反编译技术可以将汇编语言)转换为高级语言(如C语言)。在反编译技术中,最重要、最困难的 部分是数据流分析。数据流分析是ー种用于收集计算机程序在不同点计算的值的信息的技木。具体的,可以使用程序控制流图(CFG,control flow graph)来确定对变量的一次赋值可能传播到程序中的哪些部分。在数据流分析中,主要包括寄存器的清除和条件码的清除两个阶段。其中,现有的寄存器清除阶段一般采用如下方法让两个语句相互映射,然后消去其中叠加的寄存器。这种方法会造成磁盘的频繁读写,耗费了大量时间,执行效率低。
技术实现思路
为解决上述技术问题,本专利技术实施例提供一种反编译数据流分析中的寄存器清除方法及系统,以解决现有寄存器清除方法执行效率低的问题,技术方案如下一种反编译数据流分析中的寄存器清除方法,包括打开寄存器清除之前汇编语言的代码文件并读取所述代码文件中的所有函数语句;对所读取的函数语句依次本文档来自技高网...

【技术保护点】
一种反编译数据流分析中的寄存器清除方法,其特征在于,包括:打开寄存器清除之前汇编语言的代码文件并读取所述代码文件中的所有函数语句;对所读取的函数语句依次进行判断,判断函数语句中是否包括寄存器名称,如果是,则构建二叉树并将该函数语句输入到所述二叉树中;对包含有寄存器名称的函数语句依次进行判断,判断该函数语句中是否包括二叉树右孩子结束标识,如果是,则对构建的二叉树进行消元处理以去除所述二叉树中的寄存器名称,生成最简二叉树,根据所述最简二叉树生成高级语言的函数语句;否则,继续判断后续函数语句中是否包括寄存器名称。

【技术特征摘要】

【专利技术属性】
技术研发人员:姚力李少腾楼轶胡瑛俊吴幸陆春光刘金硕郑稳
申请(专利权)人:浙江省电力公司电力科学研究院
类型:发明
国别省市:

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

1