Windows下C/C++程序的静态分析技术

被引量 : 0次 | 上传用户:xinxing1983
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
近年来,软件逆向分析由于其在软件领域的独特作用而受到日益广泛的重视,众所周知,Windows系统具有庞大的软件群和用户群,一方面Windows下系统和软件安全一直备受关注,另一方面由于现代软件开发离底层开发越走越远,如何进一步提高程序运行效率是亟待解决的问题,因此本文对Windows操作系统下C/C++逆向分析技术进行了研究,并取得了如下成果:1.针对Windows系统下的C/C++程序,基于后面提出的C/C++高级语言语法恢复方法,提出了一个较为系统的、通用的、可实践的逆向分析模型,并对该模型中每一个高级语言元素都做了原理上和操作方法上的阐述,最后以实例验证该模型的可用性。该模型可以在一定程序上简化逆向分析中的例行操作,将分析中最耗时间也较为通用的的工作简化,从而使逆向工作者的精力主要集中在对软件设计模式、数据结构、算法和功能等核心部分的逆向分析上,有效提高逆向工作效率。2.本文对常见数据类型、表达式、语句、函数结构等基本的C语言元素进行语法分析和底层实现分析;对函数栈结构的函数序言和函数结语结构进行剖析;根据内存变量使用情况提出了一种识别变量生命周期的方法;基于函数栈帧原理提出了一种切实可行的函数边界检测方法,该方法可以准确定位特定高级语言函数的机器码范围。3.本文介绍了C++区别于C语言的高级语言特性和实现原理,并提出了切实可行的恢复方法,其中包括对new和delete操作符的实现原理进行了分析;对一般类类型的对象内存布局原理进行总结;基于内存对象布局理论提出了一种恢复类结构(包括成员变量和成员函数)的方法,该方法可以用于重建类和识别程序中创建的对象;分析了SEH实现机制和32/64位Windows程序异常处理结构;基于SEH实现机制、C++异常处理底层实现原理和RTTI设计原理提出了Windows程序异常处理语句恢复方法,该方法支持32/64位Windows程序中异常处理语句的恢复。4.最后本文通过实例演示了如何利用文中提出的逆向分析模型,借助分析工具,对Windows下一般应用软件进行逆向分析的整个流程,输入二进制可执行代码,通过分析文件类型、查找程序入口、分析C/C++语言元素、分析函数功能、分析算法,输出软件设计流程、算法和文档,在这个过程中合理协调软件与人工分析共同完成软件逆向工作,例证了该模型的正确性和可用性。
其他文献
建造工业化与抗灾可恢复是结构工程发展的目标与趋势。预应力装配式设计与施工是实现这个目标的有效途径。目前,国内外针对预应力装配式结构的研究主要集中在构件层面,鲜见针
笔者在普通高中近半年的实习中,深入研究了中国高中的美术教学,新课改以来,模块教学设置的合理性和科学性日趋凸显——不仅体现了中国普通高中教学的培养目标,而且符合中国基
组合拍卖可以使得竞标者灵活显示出自己对于物品之间替代性或互补性关系的偏好,降低竞标风险,增加拍卖者的收益,从而提高拍卖的经济效率。组合拍卖中所涉及的三个主要问题是:
采用自助法(Bootstrap method)对炔螨特(propargite)防治桑树朱砂叶螨(Tetranychus cinnabarinus)的效果进行了统计推断。将4个试验点获得的田间防治效果数据进行平方根反正
目的:分析肿瘤样脱髓鞘患者的影像学(MRI)特征。方法:对2006年1月至2014年1月期间就诊于解放军总医院、因被误诊为脑肿瘤等占位性疾病而行手术或者需同肿瘤相鉴别而行活检的肿
新闻传播作为人们日常生活中重要的传播活动,总是会受到周围环境的制约,并且这些因素各不相同,本文从影响新闻传播活动的媒介和社会环境出发,对《一个人与这个社会》进行文本
<正> 辣蓼草种类较为繁杂,分布极广,全国各地均有,广西地区有辣蓼、水蓼、旱辣蓼等数种,其鉴别方法如下:1.辣蓼:又名醉焦草、引蚯草(Polygonu-m flaccidum R.),高约60-70厘米
<正>前言2013年3月21日,中华遗嘱库在北京西交民巷挂牌成立。成立伊始现场便出现火爆场面,每天来办理和咨询遗嘱业务的人应接不暇,据悉预约工作已经排到2014年以后,以每天预
<正> 乌龙茶干燥过程可分为毛火和足火两个部分。对品质的影响是个重要环节,不可忽视。毛火程度一般认为掌握六成干度为宜,而所谓六成干的含义又很模糊,对足火的温度与时间的
目的:本研究旨在通过回顾性对比、分析传统右半结肠癌根治手术病例与完整结肠系膜切除右半结肠癌病例,探讨完整结肠系膜切除(CME)在右半结肠癌手术中的初步应用价值。方法:搜集皖