[发明专利]一种基于变量关联树的复杂类型重构方法有效

专利信息
申请号: 201810793950.2 申请日: 2018-07-19
公开(公告)号: CN108897572B 公开(公告)日: 2020-09-15
发明(设计)人: 胡昌振;马锐;菅泽峰;朱天保;刘健雄 申请(专利权)人: 北京理工大学;北京计算机技术及应用研究所
主分类号: G06F8/72 分类号: G06F8/72
代理公司: 北京理工大学专利中心 11120 代理人: 高会允;仇蕾安
地址: 100081 *** 国省代码: 北京;11
权利要求书: 查看更多 说明书: 查看更多
摘要: 发明公开了一种基于变量关联树的复杂类型重构方法,该方法具体为:将待处理的二进制程序转化为汇编程序,并对汇编程序中的各函数单元进行变量关联树VRT的创建;依据变量关联树VRT创建变量地址映射表VAM;根据汇编程序对变量关联树VRT中节点的属性信息进行更新得到最终VRT,同时更新变量地址映射表VAM,最终VRT对应的变量地址映射表VAM包含了汇编程序的基本类型重构结果。识别筛选出根节点的运算符属性为解引用的最终VRT作为指针VRT,其中B+C形式指针VRT对应的复杂类型为结构体,B+V+C形式指针VRT对应的复杂类型为数组,对于B+C形式指针VRT和B+V+C形式指针VRT分别采用不同的方法进行结构体和数组的重构。该方法能够实现快速、有效的复杂类型重构,且重构结果较为准确。
搜索关键词: 一种 基于 变量 关联 复杂 类型 方法
【主权项】:
1.一种基于变量关联树的复杂类型重构方法,其特征在于,该方法包括如下步骤:步骤一、将待处理的二进制程序转化为汇编程序,并对汇编程序中的各函数单元进行变量关联树VRT的创建;所述变量关联树VRT的节点为所述函数单元中的变量,以变量之间的关联关系创建节点间的关联关系;每个变量关联树VRT中的节点属性信息包括:从所述汇编程序中提取的类型约束信息属性以及运算符属性;所述类型约束信息属性为节点对应变量在所述汇编程序中的类型信息,所述运算符属性为节点对应变量在所述汇编程序中对应的运算符信息;同时依据所述变量关联树VRT创建变量地址映射表VAM,所述变量地址映射表VAM中存储有所述变量关联树VRT中所有节点对应变量的索引,包括变量的属性信息,即类型约束信息属性以及运算符属性;根据汇编程序对变量关联树VRT中节点的属性信息进行更新得到最终VRT,同时更新变量地址映射表VAM,最终的变量地址映射表VAM包含了基本类型重构结果;步骤二、识别筛选出根节点的运算符属性为解引用的最终VRT作为指针VRT;所述指针VRT根据其结构形式分为B+C形式指针VRT以及B+V+C形式指针VRT;其中B+C形式指针VRT对应的复杂类型为结构体,B+V+C形式指针VRT对应的复杂类型为数组;其中B表示基址,C表示偏移常量,V表示数组下标中的变量;所述B+C形式指针VRT的结构形式包括如下两种:第一种B+C形式结构为:由一个根节点以及一个叶子节点组成,其中根节点对应的变量为T1,表示结构体中的一个成员变量,该根节点的运算符属性为解引用,采用符号“!”表示;叶子节点对应的变量为L1,表示所述指针VRT对应的结构体的基址;第二种B+C形式结构为:由一个根节点、一个寄存器型节点以及两个叶子节点组成;其中根节点对应的变量为T2,表示结构体中的一个成员变量,该根节点的运算符属性为解引用,采用符号“!”表示;寄存器型节点对应的变量为寄存器EAX,该节点的运算符属性为加;两个叶子节点对应的变量分别为L2和C1,其中L2表示所述指针VRT对应的结构体的基址,C1表示T2指示的成员变量在所述结构体中的偏移常量;所述B+V+C形式指针VRT的结构形式包括如下三种:第一种B+V+C形式结构为:根节点对应的变量为T6,表示一个数组元素,该根节点的运算符属性为解引用,采用符号“!”表示;根节点具有一个子节点,对应的变量为T5,运算符属性为加;T5有两个子节点,左儿子节点对应的变量为T3,运算符属性为取地址,采用符号“&”表示,右儿子节点对应的变量为T4,运算符属性为乘;T3有一个子节点,对应的变量为S1,运算符属性为空;T4有两个子节点,左儿子节点对应的变量为L3,运算符属性为空,右儿子节点对应的变量为C2,运算符属性为空;其中T3和T5为指针,T3指向变量S1,T5指向变量T6,T6表示一个数组元素;第二种B+V+C形式结构为:根节点对应的变量为T11,表示一个数组元素,该根节点的运算符属性为解引用,采用符号“!”表示;根节点具有一个子节点,对应的变量为T10,运算符属性为加;T10有两个子节点,左儿子节点对应的变量为T8,运算符属性为取地址,采用符号“&”表示,右儿子节点对应的变量为T9,运算符属性为加;T8有一个子节点,对应的变量为S2,运算符属性为空;T9有两个子节点,左儿子节点对应的变量为T7,运算符属性为乘,右儿子节点对应的变量为C4,运算符属性为空;T7有两个子节点,左儿子节点对应的变量为L4,运算符属性为空,右儿子节点对应的变量为C3,运算符属性为空;其中T8和T10为指针,T8指向变量S2,T10指向变量T11,T11表示一个数组元素;第三种B+V+C形式结构为:根节点对应的变量为T15,表示一个数组元素,该根节点的运算符属性为解引用,采用符号“!”表示;根节点具有一个子节点,对应的变量为T14,运算符属性为加;T14有两个子节点,左儿子节点对应的变量为ESP,运算符属性为空,右儿子节点对应的变量为T13,运算符属性为加;T13有两个子节点,左儿子节点对应的变量为T12,运算符属性为乘,右儿子节点对应的变量为C6,运算符属性为空;T12有两个子节点,左儿子节点对应的变量为L5,运算符属性为空,右儿子节点对应的变量为C5,运算符属性为空;其中ESP和T14为指针,其中ESP为寄存器的一种,称为栈寄存器,表示栈指针;T14指向变量T15,T15表示一个数组元素;若所述指针VRT属于B+C形式指针VRT,执行如下S201~S202;S201、对所有的B+C形式指针VRT,提取基址B、偏移常量C以及所述指针VRT的根节点对应的变量在所述变量地址映射表VAM中对应的类型t,得到(B,C,t)集合;S202、在(B,C,t)集合中,按照基址B分类,根据相同基址B下的偏移常量C和类型t所占的字节大小重构基址B对应结构体的内部布局,即可以得到结构体中每个偏移常量下数据的类型及其所占字节大小,重构出结构体的内部布局;若所述指针VRT属于B+V+C形式指针VRT的第一种和第二种B+V+C形式结构,执行如下S211;S211、对第一种和第二种B+V+C形式结构的指针VRT,提取基址B、数组下标中的变量V以及当前指针VRT根节点对应的变量在所述变量地址映射表VAM中对应的类型t,B即为数组首地址,根据V即可推导数组大小,t即为数组元素的类型;若所述指针VRT属于B+V+C形式指针VRT的第三种B+V+C形式结构,执行如下S221~S226;S221、对所有第三种B+V+C形式结构的指针VRT,提取基址B、偏移常量C、数组下标中的变量V以及当前指针VRT根节点对应的变量在所述变量地址映射表VAM中对应的类型t,得到(B+C,V,t)集合;S222、从(B+C,V,t)集合中获取三元组(C,size,t),C为偏移常量,size为根据数组下标中的变量V的取值范围推导出的数组的大小,t为B+V+C形式指针VRT的根节点对应的变量的类型;S223、对于共n个的三元组(C,size,t),按照C的大小进行排序,其中排序为第i位的三元组为(Ci,sizei,ti),i取值为1~n;S224、令重构迭代次数k=1;S225、以B+Ck为数组首地址,sizek为数组大小,tk为数组元素的类型,进行数组重构;S226、若存在m,满足kCk+sizek且Cm‑1
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京理工大学;北京计算机技术及应用研究所,未经北京理工大学;北京计算机技术及应用研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/patent/201810793950.2/,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

tel code back_top