[发明专利]一种检测文件异常操作的方法及系统有效
申请号: | 201910011097.9 | 申请日: | 2019-01-07 |
公开(公告)号: | CN109840208B | 公开(公告)日: | 2022-08-05 |
发明(设计)人: | 刘程;刘应江;程希 | 申请(专利权)人: | 烽火通信科技股份有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 武汉智权专利代理事务所(特殊普通合伙) 42225 | 代理人: | 沈林华 |
地址: | 430000 湖北省武*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 检测 文件 异常 操作 方法 系统 | ||
本发明公开了一种检测文件异常操作的方法及系统,涉及通信技术领域,本发明利用操作系统的提供的编译特性,针对打开fopen、写入fwrite、读取fread、关闭fclose等操作系统函数的实现进行重定义,从而在软件应用层和操作系统层之间插入了一个文件句柄管理层,在该文件句柄管理层中对操作系统文件句柄和句柄状态进行管理,当发现句柄状态为关闭时,但仍然被继续操作的情况下,直接中断程序,保留问题现场,从而快速的实现问题的定位。
技术领域
本发明涉及通信技术领域,具体涉及一种检测文件异常操作的方法及系统。
背景技术
文件作为操作系统的一种重要的基础资源,被广泛的使用在各种软件的设计和开发之中,例如通过文件读取重要的配置信息,通过文件记录程序的运行轨迹、系统日志等等。
随着技术的发展,软件系统越来越庞大,对文件的读取/写入等操作亦变得越来越复杂,可能多条线程同时使用同一句柄进行读取/写入或者关闭操作;当一条线程关闭了该文件句柄后,其他线程在未感知的情况下仍然对该句柄进行写入或者释放时,会造成操作系统内存越界修改,最终导致程序在其他无关的地方跑飞。这种问题往往隐蔽性比较强,由于现在的软件代码量大,而且流程复杂,简单的通过走读代码很难发现问题。
比较成熟的商业化软件平台,都会针对文件操作接口打开fopen、写入fwrite、读取fread、关闭fclose进行二次封装,在封装函数中针对用户对无效文件句柄的操作进行检测和防护;但是还有很多应用软件直接调用操作系统的文件操作接口,参见图1所示,由于没有采取相关的文件句柄管理机制,一旦出现关闭文件句柄后,继续对其进行写入或者关闭的操作造成的系统跑飞问题,将很难进行定位。
而且在软件开发的后期或者软件维护阶段,针对一次跑飞问题重新针对文件句柄管理进行设计和开发将会费时费力,并且会影响程序原有的稳定性,如何在不修改软件代码的情况下,能够快速地定位此类原因,成为亟待需要解决的问题。
发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种检测文件异常操作的方法及系统,从而快速实现文件异常操作的定位。
为达到以上目的,本发明采取的技术方案是:
一种检测文件异常操作的方法,包括以下步骤:
在软件应用层和操作系统层之间插入文件句柄管理层;
当软件应用层发出打开文件命令时,文件句柄管理层打开文件,创建内存块用于保存操作系统文件句柄和句柄状态,将内存块首地址作为应用层文件句柄返回给软件应用层;
当软件应用层发出读取/写入、关闭文件命令时,文件句柄管理层将传入的应用层文件句柄作为内存块首地址,读取对应的操作系统文件句柄和句柄状态;句柄状态为无效时,执行异常处理流程;句柄状态为有效时,执行对应文件操作。
在上述技术方案的基础上,所述通过对操作系统函数的实现进行重写,在软件应用层和操作系统层之间插入文件句柄管理层,具体包括以下步骤:
通过使用GNU链接器提供的–wrapsymbol属性,对操作系统函数打开fopen、写入fwrite、读取fread、关闭fclose的实现进行重定义,实现在软件应用层和操作系统层之间插入一个文件句柄管理层。
在上述技术方案的基础上,当软件应用层发出打开文件命令时,文件句柄管理层调用操作系统函数打开文件,创建内存块用于保存操作系统文件句柄和句柄状态,将内存块首地址作为应用层文件句柄返回给软件应用层,具体包括以下步骤:
S201、当应用软件层发出打开文件命令时;
S202、文件句柄管理层创建内存块,用于存储操作系统文件句柄和句柄状态;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于烽火通信科技股份有限公司,未经烽火通信科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910011097.9/2.html,转载请声明来源钻瓜专利网。