[发明专利]一种基于变量关联树的基本类型重构方法有效
申请号: | 201810793986.0 | 申请日: | 2018-07-19 |
公开(公告)号: | CN109117142B | 公开(公告)日: | 2020-11-24 |
发明(设计)人: | 马锐;朱天保;菅泽峰;单纯;田东海 | 申请(专利权)人: | 北京理工大学 |
主分类号: | G06F8/53 | 分类号: | G06F8/53 |
代理公司: | 北京理工大学专利中心 11120 | 代理人: | 高会允;仇蕾安 |
地址: | 100081 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种基于变量关联树的基本类型重构方法,是一种轻量级的基本数据类型重构方法。该方法具体为:将待处理的二进制程序转化为汇编程序后以函数为单元进行如下处理:提取函数单元中汇编指令的操作数,构建变量关联树VRT,并建立对应的变量地址映射表VAM,利用汇编程序中寄存器和汇编指令中的变量类型信息作为第一约束规则,利用VRT中各变量间的运算关系作为第二约束规则,采用第一和第二约束规则分别对VRT中的节点的类型约束信息属性进行更新,采用汇编程序中已知函数的参数和返回值的类型信息在VRT上进行传播,获得最终VRT,以上过程中实时更新VAM中变量的类型约束信息属性。所有函数单元分析完成得到的VAM包含了基本类型重构结果。 | ||
搜索关键词: | 一种 基于 变量 关联 基本 类型 方法 | ||
【主权项】:
1.一种基于变量关联树的基本类型重构方法,其特征在于,该方法包括如下步骤:步骤一、采用反汇编工具将待处理的二进制程序转化为汇编程序;步骤二、扫描所述汇编程序,以函数为单元进行划分,获得划分好的函数单元;识别所述汇编程序中的库函数;步骤三、针对划分好的所述函数单元,根据函数调用关系生成函数调用图;步骤四、遍历所述函数调用图,以函数为单元,采用后序分析确定函数单元的分析顺序;按照所述分析顺序顺次确定每次分析的当前函数单元;步骤五、针对当前函数单元,提取其中汇编指令的操作数,根据每个操作数创建对应的变量关联树节点,构建变量关联树VRT,则所述变量关联树VRT的节点即为变量,变量根据其类型分为寄存器变量、临时变量、局部变量、全局变量和函数变量;当前函数单元创建得到一个或多个变量关联树VRT实例,每个变量关联树VRT实例中的节点具有类型约束信息属性,并同时建立变量地址映射表VAM;所述变量地址映射表VAM中存储有所述变量关联树VRT实例中所有节点对应变量的索引,包括以变量为根节点的变量关联树VRT实例或者子变量关联树VRT实例,还包括变量的类型约束信息属性;步骤六、利用提取的所述汇编程序中寄存器和汇编指令中的变量类型信息作为第一约束规则,采用所述第一约束规则对所创建的变量关联树VRT实例中的节点的类型约束信息属性进行更新,获得初始VRT,同时更新所述变量地址映射表VAM中变量的类型约束信息属性;利用变量关联树VRT中各变量间的运算关系作为第二约束规则,采用所述第二约束规则对所述初始VRT中的节点的类型约束信息属性进行更新,获得中间VRT,同时更新所述变量地址映射表VAM中变量的类型约束信息属性;步骤七、以步骤二中识别的所述库函数以及当前函数单元中调用的函数作为已知函数,从所述汇编程序中获取所述已知函数的参数和返回值,并采用已知函数的参数和返回值的类型信息在所述中间VRT上进行传播,进一步确定所述中间VRT上与所述已知函数关联的变量的类型,获得最终VRT,同时更新所述变量地址映射表VAM中变量的类型约束信息属性;步骤八、按照所述分析顺序判断是否所有函数单元均分析完成,若是,则此时VAM中变量及其类型即为基本类型重构结果;否则按照所述分析顺序确定下一次分析的当前函数单元,返回步骤五。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京理工大学,未经北京理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201810793986.0/,转载请声明来源钻瓜专利网。