基于动态二进制探测工具的程序执行行为分析与研究

来源 :上海交通大学 | 被引量 : 0次 | 上传用户:yangor2008
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
程序员经常需要知道程序在动态执行时的行为,从而更好地判断软件产品的正确性和可靠性。由于程序执行行为会因为输入或执行环境的不同而表现出不确定性,因此程序员很难及时了解程序执行的动态信息,如内存操作行为、堆栈操作行为、控制流信息、数据流信息等。通过软件日志等方法可以描述出程序执行的大致轨迹,但需要在软件开发时花大量的时间去实现日志记录模块。对于某些库文件或者以二进制方式发布的程序来说,这种方法往往不能达到预期的目的。 本文基于自主开发的动态二进制翻译基础平台Crossbit,构建了一系列动态二进制探测工具,从性能探测,内存、堆栈行为检测等多方面研究了使用动态二进制探测工具对程序执行行为作分析的方法。这些动态二进制探测工具包括:Cachebit,一个可以模拟硬件Cache 执行行为的工具。通过不同的Cache 配置,可以模拟客户程序执行过程中的Cache 缺失情况。Membit,一个可以做堆栈溢出检测以及内存泄露检测的工具。通过影子内存技术,为堆栈添加额外的不可写空间以检测非法的溢出写操作。并利用动态的库函数替换完成内存申请分配的监控,统计内存泄露的情况。Resumebit,一个通过对程序状态进行备份与恢复实现进程级休眠与唤醒的工具。通过对程序执行过程中的状态数据定时进行备份,使程序在意外中断或者主动休眠后可以从中断点继续执行。Watchbit,一个可以回放特定内存状态变化的工具。通过对指定的内存地址建立内存访问日志从而回放该内存的状态变化,帮助程序员更好的了解某些关键变量或关键内存地址的状态变化过程,以更好的分析程序的执行行为。 通过本文介绍的这些动态二进制探测工具,可以帮助程序员获得一个程序在各个方面的执行行为数据,如Cache 表现,内存、堆栈操作,程序执行状态数据等。同时借助Crossbit的多源多目标特性,可以做到源机器平台无关的程序行为分析,为软件产品的可靠性与健壮性改进提供更多的参考。
其他文献
云平台虚拟化技术不但使得软件应用具有更高的效率,也给任务调度与资源管理带来了新的机遇。随着云平台的任务逐渐增加,一些调度任务之间的关联性逐渐淡化,传统云平台任务调
煤矿安全事故频出,严重影响了正常的生产秩序以及人员的生命安全,因此更加显示出煤矿安全信息系统对于煤矿安全生产的重要性。现有的煤矿安全信息系统大多是以工业总线为基础构
随着计算机科学技术的飞速发展,人们不再满足于单一的检索方式。哼唱检索(QBH:Query By Humming)作为一种全新的检索方式,可以帮助用户通过哼唱旋律的片断,在大规模的音乐数
移动网络和智能设备的普遍应用推动了基于位置服务(Location-based Service,LBS)的高速发展,兴趣点(Point of Interest,POI)推荐是基于位置服务中的一项关键技术,其研究已经受到国内
随着社会经济的发展,交通拥挤、线路阻塞和交通事故频繁发生正越来越严重的困扰着世界上的各大城市。汽车工业发展引起的道路交通不能满足需求的种种问题越来越突出。传统的公