基于切片的二进制代码可视化分析的研究

来源 :广东工业大学 | 被引量 : 2次 | 上传用户:mervin10183
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
随着信息时代的来临,社会对软件的需求迅速增长,各种类型的、复杂多变的软件与日俱增,而这些软件大部分是用高级语言编写的,但绝大部分软件产品只提供可执行的程序,即通常意义上的二进制代码,而不提供高级语言文本,因而软件的分析和理解不得不停留在机器语言的级别上。可是机器代码程序的可读性差,分析起来复杂、困难而且容易出错,效率很低,在很大程度上依赖于人的智力劳动。因而,如何简化程序理解和软件分析是软件工程中的重要课题。程序切片是一种分解程序的重要工具,在软件分析和理解等领域有广泛的应用。本文在二进制程序分析和理解中引入程序切片技术,解决在程序理解、程序复杂性度量、程序转换中遇到的问题。通过切片运算可以达到分解程序的目的,从而降低程序的复杂度,便于程序的理解和进一步的分析。本文的主要工作如下:首先,本文介绍了二进制程序的文件结构,包括PE文件的基本组成部分,其在磁盘和内存中的布局,以及操作系统是如何将二进制程序加载进内存,并介绍反汇编二进制程序的算法。其次,本文使用图理论辅助二进制程序的分析,通过使用反汇编引擎,识别代码中的用户自定义函数,并构造函数的控制流程图和数据流程图。借助控制流程图,识别程序中的if-else, while, do-while等高级语言结构。然后使用表达式算法对程序进行数据流分析,在生成伪高级语言过程中,消除指令的冗余寄存器,冗余条件转移码等,完成了过程调用参数,返回值及它们类型的恢复。然后,利用静态切片技术将程序简化为影响指定的程序语句和判定式的集合,捕获原来程序的行为子集的一部分,通过控制流和数据流分析得到语句间的依赖关系,从而完善对二进制程序上的分析,例如识别间接跳转,间接调用等用控制流分析无法识别的程序结构等。最后,本文选取了数据结构中的冒泡算法和基于win32的对话框程序验证程序切片分析系统的有效性和流程图的可视化。
其他文献
自然图象抠图与合成是实现数字图象局部内容替换的图象处理技术。它能够突破实际场景的限制,把自然图象中任意对象进行组合,构成一幅新的图象。目前该技术在照片处理、影视制
石油和天然气是不可再生资源,对我们的生活十分重要。地球物理勘探的一个重要课题就是如何处理地震数据,而地震数据处理软件的发展直接制约或促进到地震勘探技术的发展。长期
车载自组织网络具有车辆节点移动速度快的特性并且受环境的影响明显:在城市场景中,障碍物的存在造成车辆节点间互相隐藏;在高速公路场景中,车辆节点的高移动性造成车载网络拓
随着电子商务系统建设的日趋壮大,应用安全控制成为该系统中最为重要的一部分,主要负责用户身份验证,用户行为控制,系统资源安全保护以及日志管理记录,是系统的一大核心模块。然而,目前对系统的安全性研究大多集中在网络安全、主机安全、数据安全以及病毒防治等方面,而对业务系统应用层安全的设计和实现却鲜有突破;传统的OOP设计也使得业务模块和安全模块之间的耦合性越来越高,这种现状使得业务系统的设计和开发变得越来
由于用户需求和运行环境会不断的变化,软件系统在运行过程要不断地更新,这导致了软件演化性的不断增强,因而演化性也成为了软件的本质属性。目前软件演化主要分为两类:静态演
随着国家城市化进程的推进,机动车数量快速增长,城市道路的建设不能满足机动车快速增长的需求,使得交通网络日趋复杂,导致交通事故频发。在信息时代来临时,交通运输领域的研
延迟容忍网络(DTN/Delay Tolerant Network)是一种特殊的网络。由于节点能力受限,物理链路不存在持续、双向的端到端路径,往返延迟长,数据速率不对称,误码率高等特征,在Internet网
随着移动互联网和O2O的快速发展,移动支付行业已经成了目前最具前景的朝阳行业,无数的科技公司、企业机构对其趋之若鹜。通过使用移动支付技术,人们免去了现金交易带来的麻烦
近年来,随着移动智能设备的迅猛发展,越来越多的移动应用比如基于位置信息的社交网络应用,开始广泛存在于日常生活中。这些资源需求巨大的移动应用给资源不足和电池容量有限的移
现代浏览器记录了用户浏览访问Web的历史。这些记录通常被用来帮助用户进行“重访问”a。同时,这些记录蕴含了丰富的用户特征和偏好,因此还可以用来帮助用户在Web上进行协同工